0

我有这个架构

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

注意:我希望两个结果都在同一行中返回...

4

1 回答 1

4

您可以使用这样的查询:

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 将只计算非空值。请在此处查看小提琴。

于 2013-06-20T09:09:02.357 回答