重要なポイント
構文
having条件
select
[別名].[カラム名1]
,[別名].[カラム名2]
,avg([別名].[カラム名3])
from [テーブル名] [別名]
group by [別名].[カラム名1]
,[別名].[カラム名2]
having avg([別名].[カラム名3]) >= [集計条件];
<例題>
- 学生マスタ(students_mst)からデータを取得すること。
- 抽出条件(集計前)なし
- カラム
- 学科ID(department_id)
- 性別(gender)
- テスト点数(test_score)の平均値を取得(平均点)すること
- 集計単位
- 学科ID(department_id)ごと
- 性別(gender)ごと
- 集計後条件
- テスト点数(test_score)の平均値を取得(平均点)が〈50〉以上
select
sm.department_id
,sm.gender
,avg(sm.test_score)
from students_mst sm
group by sm.department_id
,sm.gender
having avg(sm.test_score) >= 50;
追加集計条件
select
[別名].[カラム名1]
,[別名].[カラム名2]
,avg([別名].[カラム名3])
from [テーブル名] [別名]
group by [別名].[カラム名1]
,[別名].[カラム名2]
having avg([別名].[カラム名3]) >= [集計条件1]
and avg([別名].[カラム名3]) < [集計条件2];
<例題>
- 学生マスタ(students_mst)からデータを取得すること。
- 抽出条件(集計前)なし
- カラム
- 学科ID(department_id)
- 性別(gender)
- テスト点数(test_score)の平均値を取得(平均点)すること
- 集計単位
- 学科ID(department_id)ごと
- 性別(gender)ごと
- 集計後条件
- テスト点数(test_score)の平均値を取得(平均点)が〈50〉以上
- かつテスト点数(test_score)の平均値を取得(平均点)が〈80〉未満
select
sm.department_id
,sm.gender
,avg(sm.test_score)
from students_mst sm
group by sm.department_id
,sm.gender
having avg(sm.test_score) >= 50
and avg(sm.test_score) < 80;
条件と並び替え
select
[別名].[カラム名1]
,[別名].[カラム名2]
,avg([別名].[カラム名3])
from [テーブル名] [別名]
where [別名].[カラム名4] >= [条件1]
and [別名].[カラム名5] < [条件2]
group by [別名].[カラム名1]
,[別名].[カラム名2]
having avg([別名].[カラム名3]) >= [集計条件1]
and avg([別名].[カラム名3]) < [集計条件2]
order by avg([別名].[カラム名3]) desc;
<例題>
- 学生マスタ(students_mst)からデータを取得すること。
- 抽出条件(集計前)
- 学科ID(department_id)が〈2〉以上
- かつ学科ID(department_id)が〈10〉未満
- カラム
- 学科ID(department_id)
- 性別(gender)
- テスト点数(test_score)の平均値を取得(平均点)すること
- 集計単位
- 学科ID(department_id)ごと
- 性別(gender)ごと
- 集計後条件
- テスト点数(test_score)の平均値を取得(平均点)が〈50〉以上
- かつテスト点数(test_score)の平均値を取得(平均点)が〈80〉未満
- 並び順
- テスト点数(test_score)の平均値を取得(平均点)を降順
select
sm.department_id
,sm.gender
,avg(sm.test_score)
from students_mst sm
where sm.department_id >= 2
and sm.department_id < 10
group by sm.department_id
,sm.gender
having avg(sm.test_score) >= 50
and avg(sm.test_score) < 80
order by avg(sm.test_score) desc;
記述の注意点
集計関数条件でも、「and」や「or」などを使用することが可能です。
また、ここまで学んできた構文の記述順番をしっかりと理解するようにしよう。
次からは、いよいよ「テーブル結合」です。ぐっと難易度があがってきますので、分からないことが無いように復習を忘れずに。