我有一个这样的表,例如:
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的百分比。我可以在单独的条件下获得此信息,但我只需要一个条件。我也有一些除以零误差。在这种情况下,我该如何纠正?
尝试:
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。
total::float
float
int/int ==>int
sql小提琴演示