2016-11-21 60 views
1

我有一個數據表Employees。我想向員工列出所有員工的平均工資高於員工平均工資的員工。我寫到目前爲止的代碼是:嵌套函數中的錯誤組

select employee_id, last_name, salary 
from employees 
group by employee_id 
having salary > (select avg(sum(salary)) 
       from employees); 

但是,當我運行這個時,發生了一個「無嵌套功能的嵌套函數」錯誤。我該如何解決?

+0

難道你只是想平均?不需要總和?是不是平均所有員工工資的總和除以數量?爲什麼總結?數學沒有意義,編譯器要求你更好地定義你的想法。也許你的意思是:「有工資」(從員工中選擇平均工資(工資) );'如果你這樣做,不需要外部團隊。 – xQbert

回答

2

GROUP BY不必要的。外面的組是不聚合的。只有在使用聚合函數時才需要分組。由於沒有聚合功能,沒有分組通過!

雙重聚合(avg(sum(salary))不需要子查詢平均本身將返回一個平均值。不知道總和試圖做什麼。如果您平均總和,您將得到總和。 (說我有1,2,3,4,5:總和是15,平均值的平均值是15.但是,平均值是3.)

並且沒有GROUP BY,HAVING變成了WHERE

SELECT employee_id, last_name, salary 
FROM employees 
WHERE salary > (SELECT avg(salary) 
       FROM employees); 
+0

謝謝xQbert!我犯了多麼愚蠢的錯誤;忘了平均就夠了。 – Tim

+0

有時我們都需要第二組眼睛。 (我通常還需要2 1/2個大腦; 1和1/2來彌補我犯的錯誤) – xQbert