2016-11-23 6 views
2

私はテーブルと、datetime_diagnosisDATETIMEタイプ)とdiagnosisというフィールドを持っています。私は各疾患が最も多く出現したYEAR_MONTHを表示するクエリを実行する必要があります。SQL:複数のCOUNT/MAXを作成する方法

私はこの時点では現在、午前:

次の例の表の結果
SELECT disease , COUNT(*) AS frequency , 
     EXTRACT(YEAR_MONTH FROM datetime_diagnosis) AS interval 
FROM medic_appointment 
GROUP BY disease , interval 

:私はこのような何かやろうとしています

disease frequency interval 
-------- --------- -------- 
disease1 5   201609 
disease1 8   201610 
disease1 22   201611 
disease1 1   201612 
disease2 7   201611 

:上記のクエリを使用して、それをインクリメントそれは最も高い頻度の番号を選択し、間隔と病気のフィールドを返し、病気でグループ化する方法で...しかし、それはこのように動作していないと私はそれを把握するための別の方法を見つけることができません。これが最善の選択肢であるかどうかは不明です。

編集:期待される結果:

disease frequency interval 
-------- --------- -------- 
disease1 22   201611 
disease2 7   201611 
+2

言葉で期待される結果を提供することを理解するために多くの複雑です。期待される結果を提供する。 – Viki888

答えて

0

はこれを試してみてください:

SELECT disease, frequency, interval 
FROM (
    SELECT disease, frequency, interval, 
     @rnk := IF(@dis = disease, @rnk + 1, 
        IF(@dis := disease, 1, 1)) AS rnk 
    FROM (
    SELECT disease, COUNT(*) AS frequency, 
      EXTRACT(YEAR_MONTH FROM datetime_diagnosis) AS interval 
    FROM medic_appointment 
    GROUP BY disease, interval) AS t 
    CROSS JOIN (SELECT @rnk := 0, @dis := '') AS vars 
    ORDER BY disease, frequency DESC) AS x 
WHERE x.rnk = 1 
+0

私はこれを試しましたが、エラーが発生しました。 MySQLは、@dis:= disease、1,1)の前後で構文エラーを指摘しています...私はまだこのコードを理解しようとしています。 SQLコードで作業する新しい方法 – Rodrigo

+0

@Rodrigo編集した内容を確認してください –

+0

まだ成功していません:(第4行目に構文エラーがあります(@rnk:= ...で始まります) – Rodrigo

関連する問題