sql - 在 SQL 中计算百分比
问题描述
我正在尝试在字段中返回记录值的百分比,该字段是通过使用 GROUP BY 和 COUNT 创建的,如下所示:
SELECT col_1, COUNT(col_2)
FROM table_name
GROUP BY col_1
ORDER BY 2;
所以,这段代码给了我们类似的东西:
col_1. |. col_2
A | 5
B | 10
C | 5
...
我想写一个查询,然后给我:
col_1. |. col_2
A | .25
B | .50
C | .25
...
如何使用我最初创建的内容来获得这种输出?我试过使用这样的东西,但它不起作用:
SELECT col_1, COUNT(col_2) / SUM(col_2)
FROM table_name
GROUP BY col_1
ORDER BY 2;
感谢您提供的任何帮助!
解决方案
只需使用窗口函数:
SELECT col_1, COUNT(col_2),
COUNT(col_2) * 1.0 / SUM(COUNT(col_2)) OVER ()
FROM table_name
GROUP BY col_1
ORDER BY 2;
注意:我添加了* 1.0
. 你没有指定你正在使用的数据库,有些人做整数除法(所以1 / 2
是0
而不是0.5
)。
推荐阅读
- python-3.x - 试图从 OptionMenu 中选择选项以使用 tkinter 在嵌套字典中获取多个字典值
- php - MySQL DB 查询抛出错误,说我有语法错误。好像找不到他们?我相信它在查询的列部分
- pyspark - 如何在不使用 StandardScaler 的情况下标准化 PySpark 中的列?
- azure - Azure 数据工厂映射值的一部分
- python - 如何使用 PyCharm Remote Deployment 开发多个包?
- ruby-on-rails - 使用 rspec 测试茧
- html - 使用 CSS 未将 HTML 项目定位在右侧
- javascript - 角度6面包屑不起作用
- ios - SKVideoNode 停止播放 SKAudioNode
- unit-testing - 有没有办法在本地和/或在 CI/CD 中测试 AppSync 代码?