mysql - 如何通过聚合和标志来编写?

标签 mysql sql

我有下表,其中包含 MySQL 中的 purchase_idproduct_groupflag 列。每当进行购买时,都会创建一个 purchase_id 并且购买可以在任何产品组中,它可以是成功也可以是失败,因此 flag 'Y' 或 '不。

我必须找到每个 product_group 的失败购买次数,计算公式为

failed_count = total_purchase - failed_flag

count_failure = count(purchase_id) - count(flag) where flag = 'N'

这里我必须按 product_group 分组并找到答案:

purchase_id | product_group | flag
------------+---------------+-----
1           | A             | Y
2           | A             | Y
4           | B             | N
7           | B             | N
11          | C             | Y
34          | D             | N

当我尝试基于组进行计算时,出现错误,因为子查询返回超过 1 行。
谁能帮忙?

最佳答案

这听起来像是一个基本的聚合查询:

select product_group, sum(flag <> 'N') as num_failed
from t
group by product_group;

如果flag可以是NULL使用 sum(not flag <=> 'N') .

关于mysql - 如何通过聚合和标志来编写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57101216/

相关文章:

mysql - 共享锁升级为独占锁避免MySQL死锁

php - 检查 MySQL 中是否存在记录(使用 PHP)?

mysql - 仅当每个元素都满足条件时才选择组

mysql - 从表中选择记录,其中字段不在 MySql 中不同表的左连接中

mysql - 想在查询中添加if条件

sql - 按 MySQL 困惑分组

mysql - 如何使用 SQL (MySQL) 对表中的列进行排序?

MySQL获取2个人之间的最新消息

php - 我正在尝试更新一个表并从不同的表中调用另一行

java - 如何使用 ZK 在网格中显示查询结果?