我有一個數據表員工,我想顯示僱用最多僱員的同一天僱用的所有僱員。這裏是我的代碼:計算最大值的數量
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命令未正確結束」錯誤。我如何解決它,使其運行正確?
我有一個數據表員工,我想顯示僱用最多僱員的同一天僱用的所有僱員。這裏是我的代碼:計算最大值的數量
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命令未正確結束」錯誤。我如何解決它,使其運行正確?
這可能不是最乾淨的方式,但我認爲將這樣的伎倆:
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
感謝OldProgramme!看起來很複雜,但它確實有效。 – Tim
首先,你應該在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
希望這有助於。乾杯。
這不適用於oracle <12c – OldProgrammer
@OldProgrammer這就是爲什麼我提到'在MySQL下測試'。我很確定蒂姆可以在任何他使用的平臺上轉換查詢。 –
什麼數據庫 - 甲骨文,和什麼版本? – OldProgrammer
@ OldProgrammer這是Oracle SQL Developer,版本4.1.5.12 – Tim