將 SELECT 語句結果合併為單一查詢
在處理資料庫時,結合多個資料來源的資料進行分析非常有價值。但是,實現這一點有時會帶來挑戰。在本例中,我們有兩個單獨的 SELECT 語句,每個語句都從任務資料庫中擷取特定資訊。
第一個 SELECT 語句計算分配給每個人的任務數量:
<code class="language-sql">SELECT ks, COUNT(*) AS '# Tasks' FROM Table GROUP BY ks</code>
第二個 SELECT 語句辨識每個人的逾期任務數量(其 Age 超過 Palt 的任務):
<code class="language-sql">SELECT ks, COUNT(*) AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks</code>
我們的目標是將這兩個查詢的結果合併到一個表中,該表包含每個人的標識符(ks)、他們擁有的任務總數(# Tasks) 和他們擁有的逾期任務數量(# Late) 列。
實現此目標的一種方法是使用 JOIN 操作。具體來說,LEFT JOIN 允許我們包含來自第一個表 (t1) 的所有行以及來自第二個表 (t2) 的對應行(當連接鍵 (ks) 匹配時)。如果 t2 中沒有對應的行,結果將包含 NULL 值。這確保即使沒有逾期任務的人也會出現在最終結果中。
以下查詢實作了 LEFT JOIN:
<code class="language-sql">SELECT t1.ks, t1.[# Tasks], COALESCE(t2.[# Late], 0) AS [# Late] FROM (SELECT ks, COUNT(*) AS '# Tasks' FROM Table GROUP BY ks) t1 LEFT JOIN (SELECT ks, COUNT(*) AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks) t2 ON (t1.ks = t2.ks);</code>
COALESCE 函數用於處理 [# Late] 中的潛在 NULL 值,確保傳回 0 值。這將產生所需的輸出表:
<code>KS # Tasks # Late person1 7 1 person2 3 1 person3 2 0 </code>
以上是如何將兩個 SELECT 語句組合成一個查詢以顯示任務計數和延遲任務計數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!