2017-12-11 7 views
0

'staff_no'、 'patient_id'、 'start_date'、 'reason'という列を含むテーブル 'treatment'があります。今では、治療の理由のアルファベット順に並べられた、各タイプの治療(すなわち、治療の理由)を受けている別個の患者の数を得るためにクエリを選択しなければならないが、少なくとも2つそれを受けている患者。 これは私がこのMySQLクエリを書くには?

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

をwrote-ものですが、私は#の1064errorを取得します。

+4

可能な重複などの集計機能のための一種である(https://stackoverflow.com/questions/11321491/whe n-to-use-single-quotes-double-quotes-and-backticks-in-mysql) – aynber

答えて

0

たぶん、このような何か、existsサブクエリはそのselect distinctから、グループ内で2つの以上の行を持っているすべての理由を選択しますユニーク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 [MySQLでは単一引用符、二重引用符、およびバッククォートを使用する場合]条件のが、COUNT、AVGとのそう

関連する問題