J'ai une table avec 4 colonnes, id
, Stream
qui est le texte, Duration
(int) et Timestamp
(date/heure). Une ligne est insérée à chaque fois que quelqu'un joue un flux audio spécifique sur mon site Web. Stream
est le nom, et Duration
est le temps en secondes qu'ils écoutent. J'utilise actuellement la requête suivante pour comprendre en totale écouter heures pour chaque semaine pendant un an:GROUP BY avec plage de dates
SELECT YEARWEEK(`Timestamp`), (SUM(`Duration`)/60/60) FROM logs_main
WHERE `Stream`="asdf" GROUP BY YEARWEEK(`Timestamp`);
Ce fait ce que j'attends ... présentant un total de temps pour écouter chaque semaine dans l'année où il est Les données.
Cependant, je voudrais construire une requête où j'ai une ligne de résultat pendant des semaines qu'il n'y a peut-être aucune donnée. Par exemple, si la 26ème semaine de 2006 n'a pas de lignes qui tombent dans cette semaine, alors je voudrais que le résultat SUM
soit 0.
Est-ce possible? Peut-être via un JOIN sur une plage de dates en quelque sorte?
Merci. J'ai fini par trouver une autre solution (complètement différente de ce que j'ai demandé, sinon je posterais ici), mais je vais simplement utiliser cette méthode dans le futur. C'est dommage qu'il n'y ait pas moyen de générer directement cet ensemble de données de YEARWEEK dans la requête. – Brad