DBの集合関数について

二回目さん  
(No.1)
GROUP BY で条件を指定するときはHAVINGを使うと
覚えていたのですが、
本日MySQLにて
syain表
+------+--------+
| name | salary |
+------+--------+
| K    |   5000 |
| B    |   2850 |
| C    |   2450 |
| J    |   2975 |
| S    |   3000 |
| F    |   3000 |
+------+--------+

という表に対して、salaryが平均より多い
nameを取り出そうとしたときに
 select name from syain where salary > avg(salary);
と実行したところ、エラーが出ました。
そこでwhereをhavingにしたところ、
問題なく実行でき、期待通りの結果が得られました。
GROUP BYを使っていなくても、集合関数を使用した場合、条件を書くときは
WHEREではなくHAVINGを使わないといけないということでしょうか?
2020.09.28 10:24
2年目さん 
(No.2)
集合関数を使う際はgroup byを記述しなくても暗黙的に使用されます。
グループ化した後に絞り込む場合はhaving句を使わないといけないので、where句を使うとエラーになります。
2020.09.28 12:55
二回目さん  
(No.3)
>>2年目さん
ありがとうございます!
暗黙的にgroup byが使用されているのですね!
納得できました!
2020.09.28 13:16

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。

その他のスレッド


Pagetop