有表'治疗'其中包含列,' staff_no',' patient_id',' start_date',' reason'。现在,我必须选择一个查询来获取数据库中每种类型治疗(即治疗原因)的不同患者的数量,按治疗原因按字母顺序排序,但只需列出至少有2种治疗方法接受它们的病人。 这就是我写的 -
SELECT COUNT (DISTINCT patient_id) CountNumber, reason FROM 'treatment' GROUP
BY reason ORDER BY reason;
但是我得到了#1064error。
答案 0 :(得分:0)
也许是这样的,exists
子查询将选择组中包含2行以上的所有原因,select distinct
将列出唯一reasons
和patient_id
的列表并且外部选择将显示根据该原因按患者数量排序的原因
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等集合函数