特定行数与总数的百分比计算

时间:2016-01-10 23:47:14

标签: sql postgresql select group-by percentage

我正在寻找SELECT语句来计算特定行数占总行数的百分比。 例如;假设我有一个这样的FRUIT表;

table

我想计算其名称不是桃子的行数占总行数的百分比。我试着这句话:

SELECT CAST((select count(name) from fruit WHERE name !='peach') 
as FLOAT) /
            (select count(name)from fruit)*100.0 as percentage ;

但它没有给我正确的号码。我还需要一个声明,我可以通过按功能分组来计算每个水果的百分比

我是SQL的新手,我一直在尝试,但无法找到正确的语法。请帮帮我。

1 个答案:

答案 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;