MySQL - Holen Sie sich die maximale Anzahl von einer Unterabfragegruppe
Marc
Ich habe eine Tabelle logins
mit 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 weekday
für jeden user_id
in 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 = 1
statt 2
. Ich denke, dass ich hier keine WHERE
Klausel 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;