Maison >base de données >tutoriel mysql >Comment combiner plusieurs instructions SQL SELECT pour compter les tâches et les tâches en retard ?

Comment combiner plusieurs instructions SQL SELECT pour compter les tâches et les tâches en retard ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-08 22:29:44211parcourir

How to Combine Multiple SQL SELECT Statements to Count Tasks and Late Tasks?

Combinaison de plusieurs instructions SQL SELECT : un exemple pratique

Ce guide montre comment combiner efficacement les résultats de plusieurs instructions SQL SELECT dans un tableau unique et complet. Nous utiliserons une base de données de gestion de tâches comme exemple. Chaque enregistrement de tâche comprend des détails tels que les délais, les jours jusqu'à la date limite (PALT) et l'âge (jours depuis la création). L'objectif est de générer un rapport montrant, pour chaque personne, son nombre total de tâches et le nombre de tâches en retard.

Les requêtes individuelles pour compter le total des tâches et les tâches en retard pourraient ressembler à ceci :

<code class="language-sql">SELECT ks, COUNT(*) AS "Total Tasks" FROM Table GROUP BY ks;</code>
<code class="language-sql">SELECT ks, COUNT(*) AS "Overdue Tasks" FROM Table WHERE Age > Palt GROUP BY ks;</code>

Pour fusionner ces résultats, nous utilisons un LEFT JOIN. Cela garantit que toutes les personnes du nombre total de tâches sont incluses, même si elles n'ont aucune tâche en retard.

<code class="language-sql">SELECT t1.ks, t1."Total Tasks", COALESCE(t2."Overdue Tasks", 0) AS "Overdue Tasks"
FROM 
    (SELECT ks, COUNT(*) AS "Total Tasks" FROM Table GROUP BY ks) t1
LEFT JOIN
    (SELECT ks, COUNT(*) AS "Overdue Tasks" FROM Table WHERE Age > Palt GROUP BY ks) t2
ON t1.ks = t2.ks;</code>

La fonction COALESCE gère les cas où une personne n'a aucune tâche en retard (ce qui entraîne NULL du LEFT JOIN), en remplaçant NULL par 0 pour plus de clarté. Le tableau final affichera ks (ID de la personne), « Total des tâches » et « Tâches en retard ». Le LEFT JOIN garantit que toutes les personnes sont répertoriées, qu'elles aient ou non des tâches en retard.

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