2016-11-23 3 views
2

Ich habe eine Tabelle mit dem Namen medic_appointment mit den folgenden Feldern: datetime_diagnosis (DATETIME Typ) und diagnosis. Ich muss eine Abfrage durchführen, die mir die YEAR_MONTH zeigt, die das meiste Auftreten jeder Krankheit hatte.SQL: wie man mehrere COUNT/MAX macht

Ich bin zur Zeit an dieser Stelle:

SELECT disease , COUNT(*) AS frequency , 
     EXTRACT(YEAR_MONTH FROM datetime_diagnosis) AS interval 
FROM medic_appointment 
GROUP BY disease , interval 

die in der folgenden Beispieltabelle ergibt:

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

ich so etwas wie dies zu tun, ich versuche: über die Abfrage erwähnt verwendet wird, erhöht es in einer Weise, dass es die höchste Häufigkeitszahl auswählt und mir die Intervall- und Krankheitsfelder zurückgibt, dann gruppiere ich nach Krankheit ... aber es funktioniert nicht auf diese Weise und ich kann einfach keinen anderen Weg finden, es herauszufinden. Nicht sicher, ob dies die beste Option ist.

edit: strebtes Ergebnis:

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

Providing erwartetes Ergebnis in Worten ist viel komplizierter zu verstehen. Stellen Sie die erwartete Ergebnismenge bereit. – Viki888

Antwort

0

Try this:

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

Ich habe das versucht, aber einen Fehler bekommen. MySQL zeigt auf den Syntaxfehler um die @dis: = Krankheit, 1,1) ... ich versuche immer noch, diesen Code zu verstehen (habe noch nie etwas Ähnliches gesehen), also kann es eine Weile dauern :(aber danke, dass du das gezeigt hast neue Art der Arbeit mit SQL-Codes – Rodrigo

+0

@Rodrigo Bitte überprüfen Sie die Bearbeitung, die ich gemacht habe. –

+0

Noch kein Erfolg :(hält mich auf, dass es etwas Syntaxfehler um die 4. Zeile (beginnt mit @ Rnk: = ... – Rodrigo

Verwandte Themen