図7 欠番のカタマリ gap_start ~ gap_end --------- ---- ------- 2 ~ 2 5 ~ 6 10 ~ 11 集合指向的な解法 方法はいくつかありますが、ここでは『SQLパズル第2版』の「パズル9 席空いてますか?」で紹介されているR・レムレーのアイデアを詳しく解説しましょう。 手続き型言語であれば、1行ずつテーブルから読み出し、当該の行と次の行の数値の差分が1でなければ、その間には欠番がある、という行レベルの判定処理を記述します。 一方、伝統的なSQLでは当該の行を起点に考えるのは同じですが、処理の単位が「集合」になります。リスト14でN2.numは「ある行のN1.numの数値より大きな数値の集合(上界集合)」(注5)として条件づけされています(ON N2.num > N1.num)。この集合群を一覧表示すると、表11のようになります(リ