簡體   English   中英

我的簡單 SQL 查詢有什么問題?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM