假设我在Big查询中有一个数据,一个月的数据量高达数百万行。 例如:
|---------------------|------------------|
| date | user |
|---------------------|------------------|
| 01-12-2019 | xyz |
|---------------------|------------------|
| 02-12-2019 | xyz |
|---------------------|------------------|
| 03-12-2019 | abc |
|---------------------|------------------|
现在我要检索按日数据,接下来14天的重复用户计数,即首次访问01-12-2019的用户,然后是在接下来的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,这肯定不是最佳解决方案,这就是为什么对于这种情况,我愿意养成一些最佳实践的原因。