【发布时间】:2019-11-15 08:47:59
【问题描述】:
假设我在大查询中有一个数据,一个月有数百万行。 例如:
|---------------------|------------------|
| date | user |
|---------------------|------------------|
| 01-12-2019 | xyz |
|---------------------|------------------|
| 02-12-2019 | xyz |
|---------------------|------------------|
| 03-12-2019 | abc |
|---------------------|------------------|
现在我想检索每日数据,接下来 14 天的重复用户计数,即 2019 年 1 月 12 日首次访问的用户,然后是未来 14 天内再次访问的重复用户计数(02-12-2019 - 15-12-2019)。我想出了检索相同的方法,但是对于某些特定日期,使用下面的查询。
SELECT '2019-12-01' AS visit_date, COUNT(DISTINCT user) AS visitors_count
FROM `user_data`
WHERE
date = '2019-12-01' AND user IN (SELECT user FROM `user_data`
WHERE date between DATE_ADD('2019-12-01', INTERVAL 1 DAY) AND DATE_ADD('2019-12-01', INTERVAL
14 DAY) )
GROUP BY 1
我可以使用的一种方法是 UNION ALL,这可能不是最好的解决方案,这就是为什么我愿意知道一些最佳实践,我必须养成这种情况的习惯。
【问题讨论】:
标签: sql google-cloud-platform google-bigquery