[英]What's wrong with my simple SQL query?
這個 SQL 查詢有什么問題?
SELECT
department_id, MAX(AVG(SALARY))
FROM
EMPLOYEES
GROUP BY
department_id;
它顯示不是單組組功能
2 一個查詢中的聚合函數無法完成,您應該使用子查詢來實現您的結果。
我現在無法對其進行測試,因此無法保證此查詢,但您可能會有所了解。
select max (avg_salary)
from (select department_id, avg(SALARY) AS avg_salary
from EMPLOYEES
group by department_id);
內部查詢選擇 deparment_id 和平均工資。 平均工資是使用 AS 語句使用別名 avg_salary 選擇的。
外部查詢選擇 avg_salary- 的最大值
這可能不是您問題的完整解決方案,正如我所說,未經測試,因此無法保證,但您現在應該知道如何開始。 ;-)
一個查詢中不能有多個聚合函數。 試試這個
select dept, max(average) over (partition by dept)
from (SELECT department_id dept,
(AVG(SALary) OVER (PARTITION BY department_id)) average
FROM employees);
備選方案 1,雙GROUP BY
:
SELECT department_id, AVG(SALARY)
FROM EMPLOYEES
GROUP BY department_id
HAVING AVG(SALARY) = (select max(avg_sal)
from (select avg(salary) as avg_sal
from EMPLOYEES
group by department_id))
如果有平局,將返回兩個department_id
!
備選方案2,使用cte(公用表表達式):
with
(
SELECT department_id, AVG(SALARY) as avg_sal
FROM EMPLOYEES
GROUP BY department_id
) as cte
select department_id, avg_sal
from cte
where avg_sal = (select max(avg_sal) from cte)
如果有平局,這也將返回兩個department_id
id !
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.