2017-04-21 52 views
0
SELECT departemen_id, departemen_name, COUNT(*) 
FROM departement d 
JOIN employees e 
ON  departemen_id = departement_id 
GROUP BY departemen_id, departemen_name 
HAVING COUNT(*) = (
      SELECT MAX(COUNT(*)) 
      FROM employees 
      GROUP BY departement_id 
     ); 
+0

是什麼'MAX(COUNT(*))'該做的?這沒有意義。 – Eric

回答

0

問題是MAX(COUNT(*))對dbms沒有任何意義。要遵循該路徑,您必須使用另一級別的內部查詢。

HAVING COUNT(*) = (
      SELECT MAX(CNT) FROM (
       SELECT departement_id, COUNT(*) as CNT 
       FROM employees 
       GROUP BY departement_id 
      ) 
     ); 

您可以採取的行數限制MySQL的能力,雖然優點,和您的查詢會更簡單和更高性能

SELECT d.departement_id, d.departement_name, COUNT(*) 
FROM departement d 
JOIN employees e 
ON  d.departement_id = e.departement_id 
GROUP BY d.departement_id, d.departement_name 
ORDER BY COUNT(*) DESC 
LIMIT 1; 
+0

SELECT departement_id,MIN(工資) FROM僱員 GROUP BY departement_id HAVING AVG(工資)=(SELECT MAX(AVG(工資)) FROM僱員 GROUP BY departement_id); 最近有什麼錯bro –

+0

這是完全一樣的問題,MAX(AVG(薪水))'沒有任何意義。你可以使用另一個subquert(從select(select dept,avg(salary)...)中選擇max(avg)或者使用'order by avg(salary)desc limit 1'。 –

+0

tq so much bro(y) –

相關問題