2016-03-13 131 views
1

這裏的最大值得到該行是我的數據庫是什麼樣子: https://dev.mysql.com/doc/employee/en/sakila-structure.html如何與一個總結列

我的目標是要找到有僱員工作時間最長的部門(或多個)。

以下是我有:

SELECT dept_no, MAX(SUM(DATEDIFF(
           case when to_date = '9999-01-01' then current_date else to_date end, 
           from_date))) as amount 
FROM dept_emp d, employees e 
WHERE d.emp_no = e.emp_no 
GROUP BY d.dept_no 
ORDER BY amount DESC 

我還收到「無效使用組功能」。我已經過了幾次,並且無法正確使用它。我覺得在執行MAX(SUM(DATEDIFF(時存在問題,但這是我能想到的唯一方法。任何幫助將大大讚賞!

感謝您的閱讀!

--------------------------------------------- -------------------------------------------------- ------------------------------------ 更新:

我開始思考我可能需要現在max(avg(sum(datediff( ..

回答

1

不能相互使用兩個聚合功能,即使你可以把它不會做任何事情。

您可以從您的查詢下降最大,只是由1限制結果,以獲得最大的一個,比如這個:

SELECT d.dept_no, 
     SUM(DATEDIFF(case when to_date = '9999-01-01' 
          then current_date else to_date end, 
        from_date))) as amount 
FROM dept_emp d, employees e 
WHERE d.emp_no = e.emp_no 
GROUP BY d.dept_no 
ORDER BY amount DESC 
LIMIT 1; 

如果最大的就是你在找什麼,只是更換。

+0

嘿,感謝您的答覆!所以,我開始想在這裏......我不需要那裏的AVG嗎?就像我想要每個員工在公寓裏花費的最高平均時間一樣,對吧? – LearningProcess

+1

@LearningProcess是的,在這種情況下,只需更改SUM()到AVG() – sagi

+0

謝謝,怎麼邏輯!過了很久哈哈,保重! – LearningProcess