CREATE TABLE doctor( patient CHAR(13), docname CHAR(30) );
假设我有一个这样的表格,那么我将如何显示患者人数最多的医生的姓名?就像如果最多的是三名,两名医生有三名患者,那么我将同时显示他们的名字。
这将使最大的患者:
SELECT MAX(count)
FROM (SELECT COUNT(docname) FROM doctor GROUP BY docname) a;
这是所有医生以及他们有多少患者:
SELECT docname, COUNT(docname) FROM doctor GROUP BY name;
现在,我不知道如何将它们组合起来,仅列出患者人数最多的医生的姓名。
谢谢。
最佳答案
这应该做。
SELECT docname, COUNT(*) FROM doctor GROUP BY name HAVING COUNT(*) =
(SELECT MAX(c) FROM
(SELECT COUNT(patient) AS c
FROM doctor
GROUP BY docname))
另一方面,如果只需要第一个条目,则
SELECT docname, COUNT(docname) FROM doctor
GROUP BY name
ORDER BY COUNT(docname) DESC LIMIT 1;