首頁 >資料庫 >mysql教程 >如何將兩個 SELECT 語句組合成一個查詢以顯示任務計數和延遲任務計數?

如何將兩個 SELECT 語句組合成一個查詢以顯示任務計數和延遲任務計數?

Patricia Arquette
Patricia Arquette原創
2025-01-08 22:46:43652瀏覽

How Can I Combine Two SELECT Statements into a Single Query to Show Task Counts and Late Task Counts?

將 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn