对于今天收治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

07-25 20:47