首页 >数据库 >mysql教程 >如何组合多个SQL SELECT语句来统计任务和延迟任务?

如何组合多个SQL SELECT语句来统计任务和延迟任务?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-08 22:29:44161浏览

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

组合多个 SQL SELECT 语句:一个实际示例

本指南演示了如何有效地将多个 SQL SELECT 语句的结果组合到单个综合表中。 我们将使用任务管理数据库作为示例。 每个任务记录都包含截止日期、截止日期前的天数 (PALT) 和期限(自创建以来的天数)等详细信息。 目标是生成一份报告,显示每个人的总任务数和过期任务数。

计算总任务和延迟任务的单独查询可能如下所示:

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

为了合并这些结果,我们使用 LEFT JOIN。 这确保了任务总数中的所有人员都被包括在内,即使他们没有逾期的任务。

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

COALESCE 函数处理人员没有过期任务的情况(从 NULL 产生 LEFT JOIN),为了清楚起见,将 NULL 替换为 0。 最终表格将显示ks(人员ID)、“任务总数”和“逾期任务”。 LEFT JOIN 确保所有个人都被列出,无论他们是否有逾期的任务。

以上是如何组合多个SQL SELECT语句来统计任务和延迟任务?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn