Ich versuche, eine Abfrage zu erstellen, um die durchschnittliche Anzahl der Musikstücke pro Sendung Stunde für einen bestimmten Tag zu finden.Zählen Sie die Anzahl der Elemente pro Stunde, dann finden Sie den Durchschnitt des Ergebnisses
Ich habe eine Tabelle, die protokolliert, wenn ein Track gespielt wurde, basierend auf einem Datetime-Wert (erzeugtes Feld).
Also ich muss zählen, wie viele Einträge oder Tracks, die pro Stunde protokolliert wurden.
Dann mit den stündlichen Summen, finden Sie den Durchschnitt.
Bisher habe ich das, aber fragte mich, ob es richtig ist?
SELECT AVG(a.total) FROM (
SELECT HOUR(created) AS hour, COUNT(id) AS total
FROM `music_log` r
WHERE DATE(created) = DATE(DATE_SUB(NOW() , INTERVAL 1 DAY)) group by HOUR(r.created)
) a
Ich gebe bekam, formulierte ich aus einem anderen Beitrag auf Stackoverflow, dass und nicht verstehen, was die ein und r Mittelwert/Referenz.
Ich würde gerne wissen, ob ich dieses Recht habe, so kann ich Abfrage erweitern, um ein Viertel (3 Monate) Ergebnisse zu decken.
Sieht ziemlich gut aus. Beachten Sie, dass DATE (created) keinen Index verwenden kann. A und r sind Aliase. R ist nicht unbedingt notwendig, aber a ist. – Strawberry
Oh richtig. So erstellt kann kein Index in der Tabelle sein. Ist das richtig? Ich hatte vorher keine Probleme. – mattauckland
erstellt kann indiziert werden. DATE() kann diesen Index nicht nutzen. Wenn es möglich ist (und manchmal auch nicht), ist es besser, die Abfrage so zu schreiben, dass der Index verwendet werden kann, z. : 'WHERE erstellt BETWEEN '2016-04-02 00:00:00' UND '2016-04-02 23: 59: 59';' – Strawberry