前提・実現したいこと
『達人に学ぶ SQL徹底指南書』でSQLの勉強をし始めたばかりです。
P.23のSQL文で、なぜMAXが必要なのかが理解できず躓いています。
テーブル名:StudentClub
列はstd_id|club_id|club_name|main_club_flgの4列で8行
std_id|club_id|club_name|main_club_flg
100 1 野球 Y
100 2 吹奏楽 N
200 2 吹奏楽 N
200 3 バドミントン Y
200 4 サッカー N
300 4 サッカー N
400 5 水泳 N
500 6 囲碁 N
・1つだけのクラブに所属している学生については、そのクラブIDを取得する
・複数のクラブをかけ持ちしている学生については、主なクラブのID(main_club_flugがYのクラブ)を取得する
解答は
/* CASE 式の中で集約関数を使う*/
SELECT std_id,
CASE WHEN COUNT() = 1 / 一つのクラブに専念する学生の場合 */
THEN MAX(club_id)
ELSE MAX(CASE WHEN main_club_flg = 'Y'
THEN club_id
ELSE NULL END)
END AS main_club
FROM StudentClub
GROUP BY std_id;
std_id|main_club
100 1
200 3
300 4
400 5
500 6
発生している問題・エラーメッセージ
SQL文、3行目の「MAX]を外しても出来上がるテーブルに問題はないのですが
4行目の「MAX」を外すと std_id 200 のmain_clubがNULL になるのは何故でしょうか。
そもそも何故、「MAX」が必要なのかが分かりません(>_<)
ご教授いただけないでしょうか。
該当のソースコード
ソースコード
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/16 22:30