SQL Server 百分比計算:三種方法
本指南示範了計算 SQL Server 表中數值的百分比的三種有效方法。 每種方法都達到相同的結果,根據您的偏好和資料庫結構提供靈活性。
方法一:窗函數效率
此方法利用 OVER()
視窗函數來提供簡潔且有效率的解決方案:
<code class="language-sql">SELECT Grade, COUNT(*) * 100.0 / SUM(COUNT(*)) OVER() AS Percentage FROM MyTable GROUP BY Grade;</code>
OVER()
子句計算所有行的總計數,為百分比計算提供直接基礎。
方法2:通用方法
更簡單的方法,適用於各種 SQL 方言,涉及子查詢:
<code class="language-sql">SELECT Grade, COUNT(*) * 100.0 / (SELECT COUNT(*) FROM MyTable) AS Percentage FROM MyTable GROUP BY Grade;</code>
這直接將每個等級的計數除以從子查詢獲得的總行數。
方法3:通用表表達式(CTE)
為了增強可讀性和模組化,可以使用 CTE:
<code class="language-sql">WITH GradeCounts AS ( SELECT Grade, COUNT(*) AS GradeCount FROM MyTable GROUP BY Grade ) SELECT Grade, GradeCount * 100.0 / (SELECT SUM(GradeCount) FROM GradeCounts) AS Percentage FROM GradeCounts;</code>
CTE 先計算每個等級的計數,然後主查詢使用從 CTE 得出的總計數計算百分比。
三種方法都會產生相同的輸出格式:
<code>Grade | Percentage ------------------ A | 5% B | 15% C | 40% D | 40%</code>
以上是如何計算 SQL Server 表中值的百分比?的詳細內容。更多資訊請關注PHP中文網其他相關文章!