SQL高效率統計依優先排序的條件行
假設您有一個儲存作業資訊的表,其中包含一個指示優先順序的資料列(1到5之間的整數)。為了產生一個包含按優先順序顯示作業計數的圖表報表,您需要建立五個額外的字段,每個字段都計算具有特定優先值的行的數量。
解決方案在於在SELECT查詢中使用CASE語句。以下程式碼提供了一種高效且性能優良的方法來實現您期望的輸出:
<code class="language-sql">SELECT jobID, JobName, SUM(CASE WHEN Priority = 1 THEN 1 ELSE 0 END) AS priority1, SUM(CASE WHEN Priority = 2 THEN 1 ELSE 0 END) AS priority2, SUM(CASE WHEN Priority = 3 THEN 1 ELSE 0 END) AS priority3, SUM(CASE WHEN Priority = 4 THEN 1 ELSE 0 END) AS priority4, SUM(CASE WHEN Priority = 5 THEN 1 ELSE 0 END) AS priority5 FROM Jobs GROUP BY jobID, JobName;</code>
此查詢實質上使用SUM()函數計算每個優先權等級的行數。但是,它也使用CASE語句排除了不符合特定優先條件的行。結果是一個表,其中包含表示條件計數的附加欄位。
要只包含作業計數,而不包含結果中的jobID和JobName,只需從SELECT語句中刪除這些欄位並刪除GROUP BY子句即可。
以上是如何在SQL中以優先權有效率地計算條件行數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!