2016-11-22 122 views
0

我有一個數據表員工,我想顯示僱用最多僱員的同一天僱用的所有僱員。這裏是我的代碼:計算最大值的數量

select last_name, hire_date, count(*) as "Number of Employees Hired" 
from employees 
group by last_name, hire_date 
where hire_date = max(count(*)); 

但是,當我運行它時,此代碼顯示「SQL命令未正確結束」錯誤。我如何解決它,使其運行正確?

+0

什麼數據庫 - 甲骨文,和什麼版本? – OldProgrammer

+0

@ OldProgrammer這是Oracle SQL Developer,版本4.1.5.12 – Tim

回答

1

這可能不是最乾淨的方式,但我認爲將這樣的伎倆:

SELECT last_name, 
    max_hire.hire_date, 
    max_hire.cnt 
FROM 
    (SELECT * 
    FROM 
    (SELECT hire_date, 
     COUNT(*) cnt 
    FROM employees 
    GROUP BY hire_date 
    ORDER BY COUNT(*) DESC 
    ) 
    WHERE rownum = 1 
) max_hire 
INNER JOIN employees 
ON employees.hire_date = max_hire.hire_date 
+0

感謝OldProgramme!看起來很複雜,但它確實有效。 – Tim

0

首先,你應該在GROUP BY條款使用前WHERE其次,你應該使用聚合函數(count)正確,因爲在你的情況count(*)不能在WHERE子句中進行比較。

你可以用下面的方法去不使用其中:(MySQL的下測試)

select last_name, hire_date, count(*) as "Number of Employees Hired" 
from employees 
group by last_name, hire_date 
Order by "Number of Employees Hired" desc limit 1 

希望這有助於。乾杯。

+0

這不適用於oracle <12c – OldProgrammer

+0

@OldProgrammer這就是爲什麼我提到'在MySQL下測試'。我很確定蒂姆可以在任何他使用的平臺上轉換查詢。 –