gpt4 book ai didi

SQL:按计数 (*) 分组作为总表行数的百分比

转载 作者:行者123 更新时间:2023-11-29 11:24:51 25 4
gpt4 key购买 nike

我花了很多时间搜索这个,如果重复请告诉我。

我需要编写一个分组查询,返回记录的类别以及每种类别的计数。像这样:

select categorynum, count(*) from tbl group by categorynum;

到目前为止一切顺利。现在我需要确定每个类别的计数占总数的百分比。我想出的最好的是这个,我不喜欢,感觉很脏:

select categorynum, count(*), count(*)/(select count(*) from tbl) from tbl group by categorynum;

它可以工作,但是这样做真的很烦我。我使用的数据库与 Postgres 语法兼容,并且表上的 count(*) 非常快,因此在表上执行 count(*) 不会有太大的速度影响表,但如果可能的话,我想编写更好的 SQL。

那么有没有更好的写法呢?这是我经常遇到的情况,所以我想正确地编写我的查询。

最佳答案

因为 PostgreSQL 支持窗口函数,你可以这样做:

select categorynum,count,100*count/(sum(count) over ())::numeric as count_pct
from(
select categorynum,count(1)
from tbl
group by categorynum
)a;

关于SQL:按计数 (*) 分组作为总表行数的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8011313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com