对于今天收治10位以上患者的每个病房,列出病房名称,病房类型和每个病床的床位数
提供以下架构:
Patient(PatNo, patName, patAddress, DOB)
Ward (wardNo, wardName, wardType, noOfBeds)
Contains (PatNo, WardNo, admissionDate)
这是我的SQL:
select PatNo, wardNo, wardName, wardType, noOfBeds
from Ward w , Contains c
where w.wardNo = c.WardNo
and count(c.patNo) > 10
and c.admissionDate = getDate();
我不明白如何在关系代数中使用聚合。
最佳答案
两件事情。第一,
and c.admissionDate = getDate();
getDate()返回一个日期时间,因此它几乎永远不会返回任何东西。你可能想要
and c.admissionDate = cast(getDate() as date);
接下来,您不希望聚集在where子句中。您想要:
having count(c.PatNo) > 10
要么
and (subquery to get admitted patient count) > 10