Maison > base de données > tutoriel mysql > Comment récupérer les données de ventes complètes des sept derniers jours à partir d'une table MySQL, y compris les jours sans transactions ?

Comment récupérer les données de ventes complètes des sept derniers jours à partir d'une table MySQL, y compris les jours sans transactions ?

Barbara Streisand
Libérer: 2024-12-29 13:58:11
original
505 Les gens l'ont consulté

How to Retrieve Complete Sales Data for the Last Seven Days from a MySQL Table, Including Days with No Transactions?

Récupération de données complètes à partir d'une table unique MySQL : couverture des lignes vides et des transactions récentes

Dans cette discussion, nous visons à relever un défi commun rencontré lors de l'interrogation d'une base de données : comment intégrer à la fois les transactions récentes et les jours vides dans les résultats. Plus précisément, nous nous concentrerons sur la récupération des sept derniers jours de transactions de vente tout en incluant les lignes vides pour les jours sans aucune activité.

Pour commencer, nous exploiterons les capacités de la fonction COALESCE(), qui nous permet de substituer une valeur par défaut si l'expression est évaluée à NULL. Dans ce cas, nous utiliserons 0 comme valeur par défaut pour les lignes vides.

Nous créerons ensuite une sous-requête pour générer une liste complète des dates couvrant les sept derniers jours. Cela servira de base à l'ensemble de résultats complet, garantissant que les lignes vides sont incluses.

Enfin, nous effectuerons une opération LEFT JOIN entre la liste de dates générée et la table des transactions, en faisant correspondre les enregistrements en fonction du PURCHASE_DATE. colonne. Cela fusionnera les transactions avec les enregistrements de dates vides, nous permettant de calculer le montant total des ventes pour chaque jour et d'afficher à la fois les transactions récentes et les lignes vides.

La requête résultante fournira effectivement un aperçu complet des sept dernières jours de transactions de vente, comptant les jours sans activité enregistrée.

Voici la requête complète pour référence :

SELECT 
    t1.purchase_date,
    COALESCE(SUM(t1.amount + t2.amount), 0) AS amount
FROM 
    (
        SELECT DATE_FORMAT(a.Date,'%Y-%m-%d') AS purchase_date,
                '0' AS amount
        FROM 
            (
                SELECT CURDATE() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY AS Date
                FROM 
                    (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS a
                CROSS JOIN 
                    (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS b
                CROSS JOIN 
                    (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS c
            ) a
        WHERE 
            a.Date BETWEEN NOW() - INTERVAL 7 DAY AND NOW()
    ) t1
LEFT JOIN 
    (
        SELECT DATE_FORMAT(purchase_date, '%Y-%m-%d') AS purchase_date,
                COALESCE(SUM(amount), 0) AS amount
        FROM 
            transactions
        WHERE 
            purchase_date BETWEEN NOW() - INTERVAL 7 DAY AND NOW()
        GROUP BY 
            purchase_date
    ) t2
ON 
    t2.purchase_date = t1.purchase_date
GROUP BY 
    t1.purchase_date
ORDER BY 
    t1.purchase_date DESC;
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal