我有这个模式
Table Foo
user_id | time_dif | tool
1 | 1 | flurry
1 | 0 | flurry
1 | 15 | flurry
1 | 4 | flurry
1 | 5 | topler
我想要的是同时执行这两项操作的查询,不幸的是我不知道如何将它们结合起来...
select count (user_id), tool from Foo group by tool;
> 4 , flurry
> 1 , topler
select count(user_id) from Foo where time_diff > 2 group by tool
> 2 , flurry
> 1 , topler
我想要一个将这两者结合在一起的查询,并给我这样的结果:
> 4 , 2 , flurry
> 1 , 1 , topler
注意:我希望两个结果在同一行中返回...
最佳答案
您可以使用这样的查询:
SELECT
tool,
COUNT(user_id) cnt,
COUNT(CASE WHEN time_diff>2 THEN user_id END) cnt2
FROM
Foo
GROUP BY
tool
如果time_diff>2,CASE WHEN会返回user_id,否则为NULL,COUNT只会统计非空值。请看 fiddle here .
关于mysql - 在同一个查询中选择全部和一些,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17209561/