Maison >base de données >tutoriel mysql >Comment puis-je combler les écarts de date dans les requêtes MySQL à l'aide d'une table d'assistance ?

Comment puis-je combler les écarts de date dans les requêtes MySQL à l'aide d'une table d'assistance ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-26 14:01:11899parcourir

How Can I Fill Date Gaps in MySQL Queries Using a Helper Table?

Remplir les écarts de dates dans MySQL à l'aide d'une table d'assistance

Récupérer des données précises à partir d'un ensemble de données nécessite souvent de traiter les plages de dates manquantes. Dans MySQL, il est possible de combler les écarts de dates en utilisant une table d'assistance.

Supposons que vous ayez une requête qui compte et résume les données pour des dates spécifiques dans une plage donnée. Cependant, certaines dates peuvent ne contenir aucun enregistrement, ce qui entraîne des lacunes dans les résultats. Pour résoudre ce problème, vous pouvez utiliser une table d'assistance qui contient toutes les dates comprises dans la plage spécifiée.

SELECT  d.dt AS date,
        COUNT(*) AS total,
        SUM(attitude = 'positive') AS positive,
        SUM(attitude = 'neutral') AS neutral,
        SUM(attitude = 'negative') AS negative
FROM    dates d
LEFT JOIN
        messages m
ON      m.posted_at >= d.dt
        AND m.posted_at < d.dt + INTERVAL 1 DAYS
        AND spam = 0
        AND duplicate = 0
        AND ignore = 0
GROUP BY
        d.dt
ORDER BY
        d.dt

Dans cette requête :

  • Les dates de la table d'assistance contiennent toutes les dates de le début à la fin de la plage souhaitée.
  • Le LEFT JOIN combine les lignes de la table des dates avec les lignes correspondantes des messages table.
  • Pour chaque date de la table des dates, la requête compte les lignes correspondantes de la table des messages, même s'il n'y a aucune correspondance.
  • Le résultat est un ensemble de données complet avec zéro valeur pour dates qui n'ont aucun enregistrement correspondant dans la table des messages.

Cette approche vous permet de combler les lacunes dans les dates et d'obtenir une série continue de données, fournissant une représentation plus complète et plus précise de votre résultats.

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