假设我有以下数据。
id name_id completed
1 10 1
2 10 0
3 15 1
4 10 0
5 20 1
6 15 0
7 20 1
8 15 0
我正在尝试通过名称 id 查找计数,这非常简单
SELECT name_id, COUNT(*) FROM db
GROUP BY name_id
现在,我有第二个要包含在查询中的组件。
对于 name_id 10,我只想计算那些 completed 为 1 的值。对于其他 name_id,我想选择它们,而不管它们是 0 还是 1。
所以我应该结束:
name_id count(*)
10 1
15 3
20 2
Name_id 10 只有 1 的计数,因为它只是完成的 1,而其他计数包括 0 和 1。
任何人都可以帮助完成这项任务。
谢谢!
最佳答案
您可以在聚合函数中使用 CASE
表达式。
SELECT name_id,
sum(case
when name_id = 10
then case when completed = 1 then 1 else 0 end
else 1 end) Total
FROM db
GROUP BY name_id;
参见 SQL Fiddle with Demo .
关于mysql - 在两个不同的条件下选择一个计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16346242/