表'treatment‘包含列'staff_no’、'patient_id‘、'start_date’、'reason‘。现在,我必须选择一个查询,以获得数据库中接受每种类型治疗(即治疗的原因)的不同患者的数量,按治疗原因的字母顺序排序,但只需列出至少有2名患者正在接受治疗的治疗。这是我写的-
SELECT COUNT (DISTINCT patient_id) CountNumber, reason FROM 'treatment' GROUP
BY reason ORDER BY reason;但是我得到了#1064error。
发布于 2017-12-12 06:18:29
可能是这样,exists子查询将选择分组中超过2行的所有原因,其中select distinct将生成唯一的reasons和patient_id列表,外部select将显示按该原因的患者数量排序的原因
SELECT `reason`, COUNT(*) FROM
(
SELECT DISTINCT `patient_id`, `reason` FROM `treatment`
WHERE EXISTS (
SELECT `reason` FROM `treatment` t2
WHERE `treatment`.`reason` = `t2`.`reason`
GROUP BY `reason`
HAVING COUNT(*)>=2
)
) t
GROUP BY reason ORDER BY `reason` HAVING是一种条件,但适用于COUNT、AVG等聚合函数
https://stackoverflow.com/questions/47759670
复制相似问题