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;

09-18 09:53