我有这个架构
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
注意:我希望在同一行中返回两个结果......
答案 0 :(得分:4)
你可以使用这样的查询:
SELECT
tool,
COUNT(user_id) cnt,
COUNT(CASE WHEN time_diff>2 THEN user_id END) cnt2
FROM
Foo
GROUP BY
tool
CASE WHEN如果time_diff> 2则返回user_id,否则返回NULL,COUNT只计算非空值。请参阅小提琴here。