查找给定列中具有零的行与 SQL 中的总行数的比率

问题描述 投票:0回答:2

假设我有如下表格:

product date value 
A       1    2
A       2    0
A       3    3
A       4    0
B       1    1
B       2    0
C       1    1
C       2    2
C       3    4

我试图找到每个产品中零的比率,例如输出将是:

product ratio
  A      0.5
  B      0.5
  C      0 

无论出于何种原因我无法使它工作,这就是我所做的:

select product, count(*) from Table where value=0 group by product 

这给了我产品中有零的行数,但这不包括 C,因为它的开头不是零。我也不知道如何将比率包括在内。我想用 case 语句来做,但仍然无法与 group by 一起使用。我想用比率的通用表表达式来做,但我认为我把问题复杂化了。

sql mysql select group-by
2个回答
0
投票

这可以使用

group by
sum(value=0)/count(1)

来完成
select product, sum(value=0)/count(1) as ratio
from mytable
group by product

这里演示


0
投票

在布尔表达式上使用

AVG()
聚合函数
value = 0

SELECT product,
       AVG(value = 0) AS ratio
FROM tablename
GROUP BY product;

查看演示

© www.soinside.com 2019 - 2024. All rights reserved.