假设我有一个表,如下所示:

product feat1 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

我正在try 找出每个产品中的零的比率,例如,输出将是:

product ratio
  A      0.5
  B      0.5
  C      0 

无论出于什么原因,我都无法做到这一点,以下是我所做的:

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

这给出了product中有零的行数,但是它不包括C,因为它一开始就没有零.我也不知道如何将这一比例纳入其中.我想用 case 陈述来做,但还是不能和GROUP BY合作.我正在考虑用比率的公共表表达式来做这件事,但我想我把问题复杂化了.

推荐答案

在布尔表达式value = 0上使用AVG()聚合函数:

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

See the demo.

Sql相关问答推荐

替换条件中的单元格值

Android房间fts4匹配语法AND OR

SQL:如何将相应位置的两个数组中的元素组合在一起

查找表中特定值的上次更新日期

将所有XML文件导入到SQL Server中

来自按PostgreSQL分组的最小日期

在Athena中使用regexp提取括号前的字符串值

将时间范围划分为全天和前后剩余小时

如何使用最后一个非 NULL 值在 PostgreSQL 列中填充 NULL 值

什么是 100.它与 100 有什么区别?

将一名成员金额分配给群组内的其他成员

PostgreSQL 中将数据从 JSONB 类型转换为 Array 类型

如何对 jsonb 中的字段执行求和,然后使用结果过滤查询的输出

BigQuery数组是否包含NULL值的判断方法

正则表达式:停在第一个匹配的其中一个字符位置上

Postgres数据库维护:基于GROUP BY删除旧记录

使用给定的变量对在循环中执行更新语句

SQL/Postgres:按日期和其他属性对相关性能进行分组

在sql server中创建唯一标识符列

pyspark 将列转换为行