問題ID: 19677
- フォーラムは新サイトへ移行しました。
- このフォーラムではゲスト投稿が禁止されています
問題ID: 19677
msg# 1
daaayoshi
投稿数: 14
正解となっている以下は、
SELECT employee_name FROM employees WHERE salary > (SELECT AVG(salary) FROM employees);
以下では誤りですか。
SELECT employee_name FROM employees HAVING salary > AVG(salary);
もう一方の正解の方も同様にHAVINGを使用するのは誤りでしょうか。
よろしくお願いします。
SELECT employee_name FROM employees WHERE salary > (SELECT AVG(salary) FROM employees);
以下では誤りですか。
SELECT employee_name FROM employees HAVING salary > AVG(salary);
もう一方の正解の方も同様にHAVINGを使用するのは誤りでしょうか。
よろしくお願いします。
Re: 問題ID: 19677
msg# 1.1
quensan
投稿数: 119
環境があればご自身で試されるのが一番理解できるのですが、エラーが出ます。
HAVING句に指定できるのは、GROUP BY句で指定した列か、グループ関数のみです。(salary列を条件にしているのでエラー)
-----
SQL> SELECT employee_name FROM employees HAVING salary > AVG(salary);
SELECT employee_name FROM employees HAVING salary > AVG(salary)
*
行1でエラーが発生しました。:
ORA-00979: GROUP BYの式ではありません。
HAVING句に指定できるのは、GROUP BY句で指定した列か、グループ関数のみです。(salary列を条件にしているのでエラー)
-----
SQL> SELECT employee_name FROM employees HAVING salary > AVG(salary);
SELECT employee_name FROM employees HAVING salary > AVG(salary)
*
行1でエラーが発生しました。:
ORA-00979: GROUP BYの式ではありません。
Re: 問題ID: 19677
msg# 1.2
daaayoshi
投稿数: 14
quensanさん
お返事が遅れました。確かにおっしゃる通りでした。ありがとうございます。
お返事が遅れました。確かにおっしゃる通りでした。ありがとうございます。