BigQuery - 查询每个元素

问题描述

我想为一个查询循环多个元素。

这是查询

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;

还要注意我对时间比较所做的更改——这样您就不必担心午夜前的几分之一秒。