Maison >base de données >tutoriel mysql >Comment afficher tous les mois dans une plage de dates, y compris ceux avec des valeurs nulles en SQL ?

Comment afficher tous les mois dans une plage de dates, y compris ceux avec des valeurs nulles en SQL ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-31 19:33:02736parcourir

How to Show All Months in a Date Range, Including Those with Zero Values in SQL?

Afficher tous les mois dans une plage de dates, y compris ceux avec des valeurs nulles

En programmation SQL, la sélection de données spécifiques dans une période de dates donnée peut être difficile, surtout lorsqu'il s'agit de valeurs manquantes. Ce problème survient lorsque l'on tente de calculer des moyennes mensuelles pour tous les mois entre deux dates, et les mois sans valeurs ne sont pas affichés.

Solution

Pour résoudre ce problème, une solution complète une approche utilisant une « table de dates » est recommandée. Ce tableau contient tous les mois compris dans la plage de dates requise. En effectuant un LEFT JOIN entre la table de dates et la table de données réelle, tous les mois, y compris ceux avec des valeurs nulles, seront affichés.

Requête SQL

Ce qui suit La requête modifiée intègre la technique LEFT JOIN :

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 `DT`.`myDate` = `myTable`.`save_date`
WHERE `DT`.`myDate` BETWEEN '2009-01-01' AND '2009-07-01'
GROUP BY `DT`.`myYear`, `DT`.`myMonth`

Cette requête garantit que tous les mois compris dans la plage spécifiée sont affichés, y compris les mois avec des valeurs nulles. En sélectionnant des champs supplémentaires dans « dateTable », vous pouvez facilement rapporter des données selon différentes périodes, telles que des trimestres ou des jours de la semaine.

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