HAVING句1

Having句は結構自由に書ける。

■以下のテーブルから、全教科を受けているstudent_idを抽出する。

f:id:akCs:20210417235734p:plain

SELECT student_id FROM TestScore

GROUP BY student_id 

HAVING (

    SELECT COUNT(*) FROM (

        SELECT DISTINCT subject FROM TestScore

    )A

) = SUM(CASE WHEN student_id IS NOT NULL THEN 1 ELSE 0 END)

 

HAVING句内で全教科数を抽出し、その数と各生徒毎のレコード数を

比較し、一致していれば全教科受けたとみなせる。

= SUM(CASE WHEN student_id IS NOT NULL THEN 1 ELSE 0 END)

 は、Count(*)でも同じ