问题描述
这是查询:
SELECT
timestamp_trunc(timestamp,DAY) as Day,count(1) as Number
FROM `table`
WHERE user_id="12345" AND timestamp >= '2021-07-05 00:00:00 UTC' AND timestamp <= '2021-07-08 23:59:59 UTC'
GROUP BY 1
ORDER BY Day
所以我在两个日期之间每天为用户“12345”设置一个行计数器,这是完美的。
但我想对我的表的每个 user_id 执行此查询。
非常感谢
解决方法
SELECT
timestamp_trunc(timestamp,DAY) as Day,user_id,count(1) as Number
FROM `table`
WHERE timestamp >= '2021-07-05 00:00:00 UTC' AND timestamp <= '2021-07-08 23:59:59 UTC'
GROUP BY 1,2
ORDER BY Day
,
如果您了解用户,则使用条件聚合:
SELECT timestamp_trunc(timestamp,COUNTIF(user_id = 12345) as cnt_12345,COUNTIF(user_id = 67) as cnt_67,COUNTIF(user_id = 89) as cnt_89
FROM `table`
WHERE timestamp >= '2021-07-05 00:00:00 UTC' AND
timestamp <= '2021-07-09 00:00:00 UTC'
GROUP BY 1
ORDER BY 1;
还要注意我对时间比较所做的更改——这样您就不必担心午夜前的几分之一秒。