MySQL - Holen Sie sich die maximale Anzahl von einer Unterabfragegruppe


Marc

Ich habe eine Tabelle loginsmit folgendem Schema:

| id | user_id | weekday |
|----|---------|---------|
|  1 |       1 |       1 |
|  2 |       1 |       2 |
|  3 |       1 |       2 |

...

Wochentag ist eine Zahl von 0 bis 6.

Ich möchte weekdayfür jeden user_idin der Tabelle herausfinden, welcher die höchste Anzahl hat .

Ich habe folgende Abfrage versucht:

SELECT MAX(num) as max_num, user_id, weekday
FROM (
    SELECT COUNT(*) as num, user_id, weekday
    FROM logins
    GROUP BY user_id, weekday
) C
WHERE user_id = C.user_id AND num = C.num
GROUP BY user_id;

Was mir weekday = 1statt 2. Ich denke, dass ich hier keine WHEREKlausel verwenden sollte, aber ich konnte nicht das richtige Ergebnis erzielen.

Ich habe andere ähnliche Fragen erfolglos überprüft, wie zum Beispiel:

Ich habe mit meinem Beispiel eine SQL-Fiddle erstellt: http://sqlfiddle.com/#!9/e43a71/1

Gordon Linoff

Hier ist eine Methode:

SELECT user_id, MAX(num) as max_num, 
       SUBSTRING_INDEX(GROUP_CONCAT(weekday ORDER BY num DESC), ',', 1) as weekday_max
FROM (SELECT user_id, weekday, COUNT(*) as num
      FROM logins l
      GROUP BY user_id, weekday
     ) uw
GROUP BY user_id;

Verwandte Artikel


Holen Sie sich die maximale Anzahl von Zeichenfolgen

Benutzer10332687 Ich habe die folgenden 'Zahlen', die eigentlich Strings aus einer Regex sind: nums = ['1', '4', '9', '10'] Ich möchte das Maximum bekommen, das wäre 10. Gibt es einen saubereren Weg, dies zu tun, als ein Listenverständnis, wie zum Beispiel: >

HIVE / HiveQL Holen Sie sich die maximale Anzahl

dedpo Beispieldaten DATE WindDirection 1/1/2000 SW 1/2/2000 SW 1/3/2000 SW 1/4/2000 NW 1/5/2000 NW Frage unten Jeder Tag ist einzigartig und die Windrichtung ist nicht eindeutig. Jetzt versuchen wir, die Anzahl der häufigsten Wind