組合多個 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中文網其他相關文章!