HOME»応用情報技術者試験掲示板»DBの集合関数について
投稿する
ありがとうございます!
暗黙的にgroup byが使用されているのですね!
納得できました!
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を使わないといけないということでしょうか?
覚えていたのですが、
本日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句を使うとエラーになります。
グループ化した後に絞り込む場合はhaving句を使わないといけないので、where句を使うとエラーになります。
2020.09.28 12:55
二回目さん(No.3)
>>2年目さん
ありがとうございます!
暗黙的にgroup byが使用されているのですね!
納得できました!
2020.09.28 13:16