我花了很多时间搜索这个,如果重复,请告诉我.
我需要编写一个分组查询,该查询返回记录类别以及每种类别的计数.像这样的东西:
select categorynum, count(*) from tbl group by categorynum;
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.现在我需要的是确定每个类别的总数占总数的百分比.我想出的最好的是这个,我不喜欢,感觉很脏:
select categorynum, count(*), count(*)/(select count(*) from tbl) from tbl group by categorynum;
Run Code Online (Sandbox Code Playgroud)
它有效,但是我真的唠叨这样做.我使用的数据库是Postgres语法兼容的,并且count(*)在一个表上非常快,所以count(*)在桌子上做一个没有巨大的速度,尽管我想尽可能写出更好的SQL.
那么有更好的方法来写这个吗?这是我经常遇到的情况,所以我想正确地编写我的查询.
小智 5
由于PostgreSQL支持窗口函数,你可以这样做:
select categorynum,count,100*count/(sum(count) over ())::numeric as count_pct
from(
select categorynum,count(1)
from tbl
group by categorynum
)a;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4045 次 |
| 最近记录: |