2016-04-21 241 views
1

我有这个疑问如何从GROUP BY中获取COUNT(*)的最大值?

SELECT Pname, COUNT(*) AS Num 
FROM employee 
JOIN project 
    ON Dno = Dnum 
GROUP BY Pname 

它提供了以下结果:

Pname     Num 
Computerization   3 
DatabaseSystems   8 
InkjetPrinters   10 
LaserPrinters   10 
Middleware    8 
Newbenefits    3 
OperatingSystems  8 
ProductX    4 
ProductY    4 
ProductZ    4 
Reorganization   1 

如何查询PnameNum,使其返回具有最高计数的元素名称?

结果应该是这样的:

InkjetPrinters 10 
LaserPrinters 10 
+1

您正在使用什么数据库? –

+0

我自己在本地主机上。 Idk – user3436529

+0

Xampp上的SQL。现在问题已解决,谢谢。 – user3436529

回答

0

您可以使用从子查询中指定HAVING子句。

在MySQL

SELECT Pname, COUNT(*) AS Num 
FROM employee 
JOIN project 
    ON Dno = Dnum 
GROUP BY Pname 
HAVING COUNT(*) = (
    SELECT COUNT(*) 
    FROM employee 
    JOIN project 
    ON Dno = Dnum 
    GROUP BY Pname 
    ORDER BY COUNT(*) DESC 
    LIMIT 1 
) 
+2

SELECT Pname,COUNT(*)AS num FROM employee,project WHERE Dno = Dnum GROUP BY Pname HAVING NUM =(SELECT COUNT(*)FROM employee JOIN project ON Dno = Dnum GROUP BY Pname ORDER BY COUNT(*)DESC LIMIT 1 ) 它的工作原理!谢谢 – user3436529

+1

@ user3436529如果这对你有用,请不要犹豫,接受它。有许多用户不会阅读整篇文章,但只需找到明显的答案。如果没有答案被标记,他们只是离开帖子。 – Atif