如何编写这个MySQL查询,?

时间:2017-12-11 19:05:08

标签: mysql

有表'治疗'其中包含列,' staff_no',' patient_id',' start_date',' reason'。现在,我必须选择一个查询来获取数据库中每种类型治疗(即治疗原因)的不同患者的数量,按治疗原因按字母顺序排序,但只需列出至少有2种治疗方法接受它们的病人。 这就是我写的 -

SELECT COUNT (DISTINCT patient_id) CountNumber, reason FROM 'treatment' GROUP 
BY reason ORDER BY reason;

但是我得到了#1064error。

1 个答案:

答案 0 :(得分:0)

也许是这样的,exists子查询将选择组中包含2行以上的所有原因,select distinct将列出唯一reasonspatient_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等集合函数