P159の例題レイダイ : グループにけて条件付ジョウケンヅけてす。
「HAVING」で設定セッテイする条件ジョウケンは、グループしたアタイタイするものです。では、実際ジッサイにやってみましょう。
売上ウリアゲ合計ゴウケイ社員シャイン番号バンゴウごとに処理ショリするけど、表示ヒョウジするのはグループの合計ゴウケイが200以上イジョウでけ」という条件ジョウケン設定セッテイします。
具体的グタイテキには、テーフ゛ル「tb」でカラム「bang」ごとに「カラムuriaの合計ゴウケイが200以上イジョウ」である「カラムbang」と
「カラムuriaの合計ゴウケイ」を表示ヒョウジします。
・・・▶ 実行ジッコウされる内容ナイヨウ
実行ジッコウマエ(テーフ゛ル「tb」) @グループの合計が200以上のもの Aグループの合計が200以上のものを
グループごとにソートする
Bカラム「bang」ごとに「カラムuria合計ゴウケイ」を表示ヒョウジする
bang uria tuki bang uria tuki bang uria tuki bang sum(uria)
A103 101 4 A102 54 5 A101 184 4 A101 484
A102 54 5 A104 181 4 A101 300 5 A102 259
A104 181 4 A101 184 4 A102 54 5 A104 274
A101 184 4 A101 300 5 A102 205 6
MySQ実行ジッコウコマンド A103 17 5 A102 205 6 A104 181 4
select A101 300 5 A104 93 5 A104 93 5
     bang,sum(uria) A102 205 6
from tb A104 93 5
   group by bang           B A103 12 6
having sum(uria)>=200;           B A107 87 6
実行ジッコウ結果ケッカ
mysql> select bang,sum(uria) from tb group by bang having sum(uria)>=200;
+------+-----------+
| bang | sum(uria)  |
+------+-----------+
| A101   |       484        | 実行ジッコウコマンドの解説カイセツ      bang,uria(sum)
| A102  |       259        | from tb
| A104  |       274         |    group by bang ; bangを group byでグループした結果ケッカ以下イカです。
+------+-----------+ 実行結果ジッコウケッカ
3 rows in set (0.03 sec) mysql> select bang,sum(uria) from tb group by bang;
+------+-----------+
| bang | sum(uria) |
+------+-----------+
| A101 |       484 |
| A102 |       259 |
| A103 |       130 |
| A104 |       274 |
| A107 |        87 |
+------+-----------+
5 rows in set (0.00 sec)
問題モンダイツギのテーフ゛ル「tb」で、カラム「uria」が50以上イジョウのデータだけを対象タイショウにして、「bang」ごとの「uria」の平均ヘイキンで120以上イジョウのものだけを、「uria」の平均ヘイキンオオいものから表示ヒョウジしてください。
▶テーフ゛ル[tb] @ [uria]が50以上イジョウのデータ A [bang]ごとの[uria]の平均ヘイキンで120以上イジョウ B [uria]の平均ヘイキンオオいもの
bang uria tuki bang uria tuki bang uria tuki bang uria(avg)
select  bang,AVG(uria)        @ A103 101 4 A103 101 4 A101 184 4 A101 242
       FROM tb A102 54 5 A102 54 5 A101 300 5 A104 137
   WHERE uria>=50          @      A104 181 4 A104 181 4 A102 54 5 A102 129
      GROUP BY bang    B A101 184 4 A101 184 4 A102 205 6
HAVING AVG(uria)>=120;      A A103 17 5 A101 300 5 A104 181 4
 ORDER BY AVG(uria) DESC;  B A101 300 5 A102 205 6 A104 93 5
A102 205 6 A104 93 5
A104 93 5 A107 87 6
A103 12 6
A107 87 6
select  bang,AVG(uria)  FROM tb   WHERE uria>=50 GROUP BY bang HAVING AVG(uria)>=120 ORDER BY AVG(uria) DESC;