首页 > 解决方案 > 在 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;

感谢您提供的任何帮助!

标签: sqlgroup-bycount

解决方案


只需使用窗口函数:

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 / 20而不是0.5)。


推荐阅读