5月12日(火)4コマ目
今日、やったこと
[確認テスト 解説]確認テスト1
今日のホワイトボード
[確認テスト 解説]確認テスト1
前回やった確認テストの解説。
問1
「贔屓店舗名」列はない。「店舗名」列に命名した別名。
顧客IDの昇順で並び替えを忘れている人がちょこちょこ。
![]() |
| 図 問1 正解例 |
問2
顧客マスタを自己結合する問題。
![]() |
| 図 問2 正解例 |
以下でも表示は同じですが、以前からちょこちょこ言っていたテーブルの別名と使われ方が一致しません。テーブルの別名と使われ方が一致しないのは×です。
![]() |
| 図 問2 テーブルの別名と使われ方が一致しない |
問3
贔屓顧客がいない店は、店舗マスタが全行出力されるように顧客マスタと外部結合すると、顧客マスタの列がnullになっている。
![]() |
| 図 問3 ① 贔屓顧客がいない店は |
この結合結果に顧客マスタの列がnullな行を検索すればいい。
![]() |
| 図 問3 正解例 |
nullか否かは is null。
問4
ちょっと難しいが、問2の応用。
問2は被紹介者(紹介される側)と紹介者(紹介する側)の組み合わせ。
問4では逆に紹介者(紹介する側)と被紹介者(紹介される側)の組み合わせ。
まずは問2のselect句の紹介者と被紹介者を入れ替えると以下のように、この人が紹介したお客さんのようになる。
![]() |
| 図 問2のselect句を入れ替え |
紹介者がいない人は不要なので、外部結合ではなく、等価結合に変更。
![]() |
| 図 外部結合 -> 等価結合 で紹介者がいない顧客を出力しない |
紹介者でグループ化、各グループの行数がその人が紹介したお客さんの人数。
![]() |
| 図 紹介者でグループ化、行数をカウント |
次回は
caseのつづき。







