SELECT OpenDate
FROM (
SELECT T2.OpenDate, Count(T1.PatientName) AS COP,MIN(T2.NumberOfPeople) AS NOP
FROM Doctor AS T2 LEFT JOIN Patients AS T1 ON T2.OpenDate = T1.AppointmentDate
GROUP BY T2.OpenDate
)
WHERE COP<NOP
SELECT T2.OpenDate, Count(T1.PatientName) AS COP,MIN(T2.NumberOfPeople) AS NOP
FROM Doctor AS T2 LEFT JOIN Patients AS T1 ON T2.OpenDate = T1.AppointmentDate
GROUP BY T2.OpenDate
按日期组合表格,从 Doctor 表中选择所有可用日期,并按日期对结果进行分组。对于每个日期,都会统计登记的患者人数,并显示医生准备接收的患者人数。
我会这样做:
T1 和 T2 是表的别名或查询结果的名称。T1 是患者表的别名,T2 是医生表的别名。使用别名代替表名或作为查询名称。
表的别名是可选的,但用于缩短查询文本,并且查询结果需要别名只是为了能够以某种方式访问它们。
阅读有关 SQL 的文献。
这个查询是如何工作的?
子查询
按日期组合表格,从 Doctor 表中选择所有可用日期,并按日期对结果进行分组。对于每个日期,都会统计登记的患者人数,并显示医生准备接收的患者人数。
顶部查询根据子查询的结果显示注册患者数量少于医生准备看诊的患者数量的日期。