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