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 ?
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!