最佳化查詢設計:使用單一SQL語句實現多個計數
在資料分析中,經常需要針對表中不同條件取得多個計數。雖然簡單的查詢可以傳回單一計數,但要在單一查詢中取得多個計數則需要更細緻的方法。
查詢結構:
為此,我們可以使用CASE語句結合聚合函數。這種方法模擬了某些資料庫系統中PIVOT函數的功能。產生的查詢採用以下形式:
<code class="language-sql">SELECT distributor_id, COUNT(*) AS total, SUM(CASE WHEN level = 'exec' THEN 1 ELSE 0 END) AS ExecCount, SUM(CASE WHEN level = 'personal' THEN 1 ELSE 0 END) AS PersonalCount FROM yourtable GROUP BY distributor_id</code>
說明:
COUNT(*)
函數計算每個 distributor_id
的總行數。 level
列遞增行計數。如果level
為'exec',則ExecCount
遞增;如果level
為'personal',則PersonalCount
遞增。 GROUP BY
子句按distributor_id
分組結果,確保每個經銷商的計數唯一。 這種方法的優點:
以上是如何從單一 SQL 查詢中有效率地取得多個計數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!