Ich habe eine Tabelle mit der Struktur folgen:Wie kann ich diese gruppierten Daten nach Spaltenwert in MYSQL trennen?
SELECT * FROM logs WHERE data = "Map load"
ORDER BY timestamp DESC LIMIT 5
user_id timestamp data
3 2017-03-29 18:11:25 Map load
2 2017-03-29 18:10:11 Map load
5 2017-03-29 18:02:07 Map load
5 2017-03-29 17:48:03 Map load
3 2017-03-29 17:38:48 Map load
ich zu Gruppenzeilen will von Intervallen von 15 Minuten, die ich getan habe. Allerdings muss ich diese Daten auch nach user_id segmentieren.
durch Intervall gruppierte:
SELECT FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(timestamp)/900)*900) AS `Time`,
COUNT(*) AS `Map Load` FROM logs
WHERE data = "Map load"
GROUP BY `Time` ORDER BY `Time` DESC LIMIT 3
Time Map Load
2017-03-29 18:00:00 3
2017-03-29 17:45:00 1
2017-03-29 17:30:00 1
Gewünschtes Ergebnis Layout:
Time user_id=3 user_id=2 user_id=5
2017-03-29 18:00:00 1 1 1
2017-03-29 17:45:00 0 0 1
2017-03-29 17:30:00 1 0 0
ich andere 60 Benutzer haben, so anders als für jedes user_id auf den 15min Intervall Zeitstempel eine Kopie dieser Tabelle beitreten, Gibt es eine andere Methode, dies zu tun?
Das funktioniert gut, aber für mehr als 60 Benutzer ist es sinnvoll, linear wachsende Abfrage zu haben, wie mehr Benutzer beitreten? Ich bin nicht sicher, dass dies wartbar wäre, es sei denn, es gibt eine Möglichkeit, dass ich das für jede user_id generieren kann. 'SELECT user_id FROM users' –
@ Lawrence_1718 - In diesem Fall nicht die Tabellendaten in SQL. Tun Sie es in Ihrem Anwendungscode. Die Antwort wurde ebenfalls aktualisiert. – GurV
danke für den Rat, aber ich habe jetzt nicht viel Auswahl, brauche dies für Daten, die bereits generiert wurde, danke für die Hilfe! –