首页 > 数据库 > SQL > 正文

SQL 聚合函数计算百分比怎么写?

舞夢輝影
发布: 2025-10-09 23:21:01
原创
992人浏览过
答案:SQL中计算百分比需用聚合值除以总和乘100,关键在于正确使用窗口函数控制分母范围,如SUM(sales)/SUM(SUM(sales)) OVER()计算类别占比,配合ROUND和类型转换确保精度与格式。

sql 聚合函数计算百分比怎么写?

在 SQL 中使用聚合函数计算百分比,通常是通过将某个聚合值除以总和,然后乘以 100 实现的。关键在于控制好分子和分母的聚合逻辑,避免重复计算或分组错误。

1. 基本百分比:某类占比整体

比如统计每个类别的销售额占总销售额的百分比:

SELECT
  category,
  SUM(sales) AS category_sales,
  ROUND(100.0 * SUM(sales) / SUM(SUM(sales)) OVER(), 2) AS percentage
FROM sales_table
GROUP BY category;

说明:
- SUM(sales) 计算每类销售额。
- SUM(SUM(sales)) OVER() 是窗口函数,对所有分组结果求和,得到总销售额。
- 乘以 100.0 确保结果为小数,ROUND(..., 2) 保留两位小数。

2. 分组内百分比:子类在组内的占比

如果数据有多个分组(如地区+类别),想看每个类别在所在地区的占比:

SELECT
  region,
  category,
  SUM(sales) AS sales,
  ROUND(100.0 * SUM(sales) / SUM(SUM(sales)) OVER (PARTITION BY region), 2) AS pct_in_region
FROM sales_table
GROUP BY region, category;

说明:
- 使用 PARTITION BY region 在窗口函数中按地区分区,只对本地区求和。

3. 行级占比:每行值占总计的百分比

如果表已经是明细数据,可以直接用窗口函数:

比格设计
比格设计

比格设计是135编辑器旗下一款一站式、多场景、智能化的在线图片编辑器

比格设计 124
查看详情 比格设计
SELECT
  *,
  100.0 * sales / SUM(sales) OVER() AS pct_total
FROM sales_table;

这种方式适合不需要 GROUP BY 的场景。

4. 常见注意事项

避免整数除法:确保至少一个操作数是浮点型,否则结果可能被截断为 0。推荐写成 100.0 * ... 或使用 CAST(sales AS FLOAT)
NULL 值处理:聚合函数会自动忽略 NULL,但如果整个组为空,结果可能是 NULL,可用 COALESCE(..., 0) 处理。
四舍五入:百分比通常保留 1~2 位小数,用 ROUND 提高可读性。

基本上就这些。根据你的数据结构选择合适的方式,核心是“部分 / 整体”再乘 100。

以上就是SQL 聚合函数计算百分比怎么写?的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号