SQL

在PostgreSQL中计算百分比

发布于 2021-06-04 17:02:19

我有一个这样的表,例如:

string adm
A       2
A       1
B       2
A       1
C       1
A       2

通过SQL查询,我想要这样的东西:

string    perc_adm (%)
A            50
B            100
C            0

我想要每个字符串中出现2的百分比。我可以在单独的条件下获得此信息,但我只需要一个条件。我也有一些除以零误差。在这种情况下,我该如何纠正?

关注者
0
被浏览
125
1 个回答
  • 面试哥
    面试哥 2021-06-04
    为面试而生,有面试问题,就找面试哥。

    尝试:

    select 
        string,
        (cnt_2/total::float)*100 perc_adm
    from (
        select 
            string, 
            count(*) total, 
            sum(case when adm = 2 then 1 else 0 end) cnt_2
        from tbl
        group by string
    ) x
    order by string
    

    在这里,total::float将除法转换为一个float值,否则int/int ==>int

    sql小提琴演示



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看