這裏是我的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)。
不確定是否「有平均年齡>年齡;將按預期工作。
您在select
中有f_name
,但按部門彙總。
您擁有的子句混合了聚合和非聚合。
想必,你想是這樣的:
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
列,如果它被包含在SELECT
聲明。另外,如果您使用的是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