は私のSQLクエリです:がこのエラーに直面していますORA-00979:GROUP BY式は私の間違いですか?ここ
select f_name, avg(age)
from students
group by dept_id
having avg(age) > age;
なぜ私は質問のタイトルで述べたエラーで、この結果?
は私のSQLクエリです:がこのエラーに直面していますORA-00979:GROUP BY式は私の間違いですか?ここ
select f_name, avg(age)
from students
group by dept_id
having avg(age) > age;
なぜ私は質問のタイトルで述べたエラーで、この結果?
f_nameはグループの集約ではありません。例えばmin(f_name)を試してみてください。
「平均(age)>年齢の場合」;期待どおりに動作します。
select
にはf_name
がありますが、部門別に集計しています。
あなたのhaving句には、集計と非集計が混在しています。あなたはそれがSELECT
文でのみGROUP BY
列が含まれていることができるかどう
select s.*
from (select s.*, avg(s.age) over (partition by s.dept_id) as avg_age
from students s
) s
where s.age > avg_age;
:
はおそらく、あなたはこのような何かをしたいです。また、GROUP BY
句を使用している場合は、GROUP BY
にすべての非集計関数列を含める必要があります。
試してみてください。
select f_name, avg(age), dept_id
from students
group by f_name, dept_id
--not sure about this next line either
--having avg(age) > age;
編集あなたの質問やショーのサンプルデータとあなたが望む結果。 –
あなたのf_nameは 'GROUP BY'節にありません。 – Eric