计算PostgreSql中的百分比

时间:2015-12-22 10:44:01

标签: sql postgresql

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

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个百分比。我能够在不同的条件下得到它,但我只需要一个条件。 我也有一些除以零错误。如何在条件下纠正?

1 个答案:

答案 0 :(得分:2)

尝试:

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 fiddle demo