我正在寻找SELECT语句来计算特定行数占总行数的百分比。 例如;假设我有一个这样的FRUIT表;
我想计算其名称不是桃子的行数占总行数的百分比。我试着这句话:
SELECT CAST((select count(name) from fruit WHERE name !='peach')
as FLOAT) /
(select count(name)from fruit)*100.0 as percentage ;
但它没有给我正确的号码。我还需要一个声明,我可以通过按功能分组来计算每个水果的百分比
我是SQL的新手,我一直在尝试,但无法找到正确的语法。请帮帮我。
答案 0 :(得分:0)
我认为最简单的方法是使用带有平均值的条件聚合:
select avg(case when fruit <> 'peach' then 100.0 else 0.0 end)
from fruits;
在Postgres中,您可以使用简写:
select 100*avg((fruit <> 'peach')::int)
from fruits;