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中文网其他相关文章!