我被困住了,我现在知道如何提出我的问题,所以我用我想要的结果创建了一个假设场景。
我正在尝试创建一个查询,计算每个用户 ID 的水果数量,但记录水果为香蕉的用户 ID 除外。
+----------+--------+--------------+
| recordID | userId | Fruit |
+----------+--------+--------------+
| 0 | 112 | Apple |
| 1 | 112 | Banana |
| 2 | 112 | kiwi |
| - | - | - |
| 3 | 113 | Banana |
| 4 | 113 | Pear |
| - | - | - |
| 5 | 114 | Dragon fruit |
| 6 | 114 | Pineapple |
| - | - | - |
| 7 | 115 | Dragon Fruit |
| 8 | 115 | Cherry |
+----------+--------+--------------+
想要的结果:
+-------+-------------+--+
| count | fruit | |
+-------+-------------+--+
| 2 | dragonfruit | |
| 1 | pineapple | |
| 1 | cherry | |
+-------+-------------+--+
忽略 UserId 113 的用户,因为它有一条值为 Banana 的水果记录。
最佳答案
你只需要一个过滤子句:
select fruit, count(*)
from t
where not exists (select 1
from t t2
where t2.userid = t.userid and t2.fruit = 'banana'
)
group by fruit
order by count(*) desc;
关于mysql - SQL 对每个 userID 记录计算一个值,但 userId 的一个记录值为 x 的情况除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52554012/