Sql 我如何选择每个医生有多少个病人?

Sql 我如何选择每个医生有多少个病人?,sql,join,select,group-by,count,Sql,Join,Select,Group By,Count,我有一张关于医院的就诊表,包括医生、病人、日期。。。。 我确实喜欢这样,但我收到了一个错误 SELECT d.DoctorID, COUNT(v.DoctorID) FROM Visits v left join Doctors d on v.DoctorID=d.DoctorID 您关心的是缺少分组依据: SELECT d.DoctorID, COUNT(v.DoctorID) FROM Doctors d LEFT JOIN Visits v ON v.Docto

我有一张关于医院的就诊表,包括医生、病人、日期。。。。 我确实喜欢这样,但我收到了一个错误

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

您关心的是缺少分组依据:

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

此外,您可能希望
左连接
医生开始
,因此保留所有医生。

您的查询缺少
GROUP BY
子句。此外,我不认为有必要加入
JOIN
。如果您需要每个
doctorID
的(不同的)
patientsID
s计数,您可以直接从
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

您缺少
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
你也可以像下面这样使用

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