HOME»応用情報技術者試験掲示板»DBの集合関数について
投稿する

DBの集合関数について [2213]

 二回目さん(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日経過したスレッドへの書込みはできません。
© 2010-2024 応用情報技術者試験ドットコム All Rights Reserved.

Pagetop