Regroupement des données par semaine dans MySQL
Lorsque vous traitez des données de séries chronologiques, il est souvent utile de regrouper les enregistrements par semaine. Alors qu'Oracle propose des fonctions intégrées à cet effet, MySQL nécessite une approche légèrement différente.
Troncation des jours de la semaine
Pour tronquer un horodatage à minuit le dimanche précédent, comme effectué dans Oracle en utilisant TRUNC(timestamp,'DY'), MySQL ne propose pas d'équivalent direct. Cependant, vous pouvez émuler ce comportement en utilisant l'expression suivante :
DATE_ADD(DATE(timestamp), INTERVAL (DAYOFWEEK(timestamp) - 7) DAY)
Cette expression soustrait le jour de la semaine en cours de l'horodatage, ce qui donne une date correspondant au dimanche précédent.
Troncation du mois
Pour tronquer un horodatage à minuit le premier jour du mois, MySQL fournit la méthode simple Fonction DATE_FORMAT(timestamp, '%Y-%m-01'), qui est similaire à TRUNC(timestamp,'MM') d'Oracle.
Troncation de la semaine
Bien que MySQL ait la fonction WEEK(timestamp), elle renvoie le numéro de la semaine dans l'année. Pour regrouper par semaines complètes, plutôt que par numéros de semaine, vous pouvez combiner YEAR(timestamp) et WEEK(timestamp) dans les clauses SELECT et GROUP BY, comme suit :
SELECT YEAR(timestamp), WEEK(timestamp) FROM ... WHERE ... GROUP BY YEAR(timestamp), WEEK(timestamp)
Vous pouvez également utiliser YEARWEEK (mysqldatefield), qui renvoie le numéro combiné de l'année et de la semaine. Cependant, sa sortie peut ne pas être aussi conviviale que l'approche YEAR(timestamp) / WEEK(timestamp).
Remarque : Pour l'agrégation par semaines complètes, y compris celles qui s'étendent sur janvier Tout d'abord, envisagez d'utiliser YEARWEEK(mysqldatefield) avec le deuxième argument (mode) défini sur 0 ou 2.
Exemple :
La requête suivante regroupe les données par semaines complètes :
SELECT YEARWEEK(timestamp, 0) AS week_number, SUM(value) AS total FROM data WHERE ... GROUP BY week_number
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!