对于今天收治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
关于mysql - 具有聚合的关系代数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16121099/