组合多个 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中文网其他相关文章!