【问题标题】:How do I select how many pantients every doctor has?我如何选择每个医生有多少病人?
【发布时间】:2020-01-18 21:25:39
【问题描述】:

我有一张医院就诊表,包括 DoctorID、PacientID、Date.... 我确实喜欢这个,但我收到了一个错误。

SELECT 
d.DoctorID, COUNT(v.DoctorID)
FROM Visits v
left join Doctors d on  v.DoctorID=d.DoctorID

【问题讨论】:

    标签: sql join select group-by count


    【解决方案1】:

    你关心错过group by

    SELECT d.DoctorID, COUNT(v.DoctorID)
    FROM Doctors d LEFT JOIN
         Visits v 
         ON v.DoctorID = d.DoctorID
    GROUP BY d.DoctorID;
    

    此外,您可能希望LEFT JOINDoctors 开头,以便保留所有医生。

    【讨论】:

      【解决方案2】:

      您的查询缺少GROUP BY 子句。此外,我认为不需要JOIN。如果您想要每个doctorID 的(不同)patientsIDs 计数,您可以直接从visit 表中获取该信息,如下所示:

      select doctorID, count(distinct patientID) from visits group by doctorID
      

      或者,如果您还想看没有病人的医生:

      select d.doctorID, count(distinct v.patientID) 
      from doctors d
      left join visits v on v.doctorID = d.doctorID
      group by d.doctorID
      

      【讨论】:

        【解决方案3】:

        Live demo on db<>fiddle

        您缺少GroupBy 子句。

        所以你可以这样修复它

        SELECT d.Name, COUNT(v.DoctorID) AS PantientCount
        FROM Doctors d
        LEFT JOIN Visits v ON d.DoctorId = v.DoctorId
        GROUP BY d.Name
        

        您也可以使用Conditional aggregation query with a group by,如下所示。

        SELECT d.Name, SUM(CASE WHEN v.CustomerId IS NOT NULL THEN 1 ELSE 0 END) AS PantientCount
        FROM Doctors d
        LEFT JOIN Visits v ON d.DoctorId = v.DoctorId
        GROUP BY d.Name
        

        输出

        【讨论】:

        • 这能回答你的问题吗?如果您需要任何帮助,请告诉我@Patrycja Bobek
        猜你喜欢
        • 2018-09-18
        • 1970-01-01
        • 2020-05-09
        • 2020-05-12
        • 1970-01-01
        • 2017-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多