Maison >base de données >tutoriel mysql >Comment extraire tous les mois d'une plage de dates, y compris les valeurs nulles dans MySQL ?

Comment extraire tous les mois d'une plage de dates, y compris les valeurs nulles dans MySQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-03 19:42:29432parcourir

How to Extract All Months within a Date Range, Including Zero Values in MySQL?

Extraire tous les mois dans une plage de dates, y compris les valeurs nulles

Dans MySQL, il est possible d'extraire des valeurs moyennes par mois dans une date spécifiée plage, même si certains mois ont des valeurs nulles. Cette fonctionnalité est cruciale pour garantir que tous les mois sont comptabilisés et affichés avec précision.

Pour y parvenir, une approche consiste à créer un « dateTable » contenant tous les mois possibles dans la plage requise. Cette table peut être remplie avec des colonnes telles que "Date", "Mois", "Année" et autres.

Par la suite, la requête d'origine peut être modifiée pour effectuer un LEFT JOIN avec le "dateTable" sur un colonne de date correspondante. Cela garantit que tous les mois de la plage de dates spécifiée sont récupérés, qu'il existe ou non des entrées correspondantes dans la table principale. La requête ressemblerait à ce qui suit :

SELECT `DT`.`myYear`, `DT`.`myMonth`,
AVG(`myTable`.`value1`) AS avg_value_1,
AVG(`myTable`.`value2`) AS avg_value_2
FROM `dateTable` AS DT
LEFT JOIN `myTable`
ON `dateTable`.`myDate` = `myTable`.`save_date`
WHERE `dateTable`.`myDate` BETWEEN '2009-01-01' AND '2009-07-01'
GROUP BY `DT`.`myYear`, `DT`.`myMonth`

Cette modification permet des rapports flexibles basés sur toutes les colonnes incluses dans "dateTable". Par exemple, le regroupement par « Trimestre financier » ou « Jour de la semaine » peut être obtenu en ajustant la clause « GROUP BY » en conséquence.

En utilisant un LEFT JOIN et un « dateTable » complet, cette approche récupère efficacement tous les mois dans une plage de dates donnée, garantissant que même ceux avec des valeurs nulles sont inclus dans la sortie.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn