是否可以使用 count 和 group by 获取查询的百分比值?

Posted

技术标签:

【中文标题】是否可以使用 count 和 group by 获取查询的百分比值?【英文标题】:Is possible to get the percentage value on query using count and group by? 【发布时间】:2021-07-08 16:33:42 【问题描述】:

我有一个问题:

select no_tipo_origem, 
       count(*) total 
from table 
group by no_tipo_origem

结果是:

tipo 1 |  25
tipo 2 | 133
tipo 3 |  48

我需要这样计算百分比:

tipo 1 |  25 | 12.1
tipo 2 | 133 | 64.5
tipo 3 |  48 | 23.3

【问题讨论】:

【参考方案1】:

将每个总数除以您可以使用SUM() 窗口函数获得的所有总数的总和:

select no_tipo_origem, 
       count(*) total,
       round(100.0 * count(*) / sum(count(*)) over (), 1) percentage 
from tablename 
group by no_tipo_origem
order by no_tipo_origem

查看简化的demo。

【讨论】:

以上是关于是否可以使用 count 和 group by 获取查询的百分比值?的主要内容,如果未能解决你的问题,请参考以下文章

SQL Group By Count 过滤优化

如何优化 PostgreSQL COUNT GROUP BY 查询?

group by...having count()的问题

使用 ActiveRecord 进行 GROUP BY 和 COUNT

having是否依赖于group by

SQL中where和group by可以连用吗?having算是对检索条件的补充吗?