SQL 计算每周的重复值
SQL count recurring values per week
我对 pandas 问过同样的问题:
现在我正在努力用 Big Query 做同样的事情 SQL。这就是我想要实现的目标:
我有一个 Table
包含按周分组的日期和 ID
items_per_week:
date id
2022-02-07 1
3
5
4
2022-02-14 2
1
3
2022-02-21 9
10
1
...
...
2022-05-16 ....
我想统计每周有多少 id 从前一周开始重复
例如,Table
所需的输出为:
date count
2022-02-07 0
2022-02-14 2 # because id 1 and 3 are present in previous week
2022-02-21 1 # because id 1 is present in previous week
...
我尝试对 ID 进行分组并计算每个 ID 在每个日期有多少重复,但没有按计划进行。
尝试做 self-join 并计算结果:
SELECT t1.date
,COUNT(t2.id) as count
FROM Table t1
LEFT JOIN Table t2
ON t1.date = DATE_SUB(t2.date, INTERVAL 7 DAY) -- finding previous week
AND t1.id = t2.id -- identifying matching ids
GROUP BY 1
这里有几个假设:
- id 每周都是唯一的(即在 2022-02-07 的一周内不能重复)
- 日期 在 7 天的周期内迭代(即每周有一个日期)
我对 pandas 问过同样的问题:
现在我正在努力用 Big Query 做同样的事情 SQL。这就是我想要实现的目标:
我有一个 Table
包含按周分组的日期和 ID
items_per_week:
date id
2022-02-07 1
3
5
4
2022-02-14 2
1
3
2022-02-21 9
10
1
...
...
2022-05-16 ....
我想统计每周有多少 id 从前一周开始重复
例如,Table
所需的输出为:
date count
2022-02-07 0
2022-02-14 2 # because id 1 and 3 are present in previous week
2022-02-21 1 # because id 1 is present in previous week
...
我尝试对 ID 进行分组并计算每个 ID 在每个日期有多少重复,但没有按计划进行。
尝试做 self-join 并计算结果:
SELECT t1.date
,COUNT(t2.id) as count
FROM Table t1
LEFT JOIN Table t2
ON t1.date = DATE_SUB(t2.date, INTERVAL 7 DAY) -- finding previous week
AND t1.id = t2.id -- identifying matching ids
GROUP BY 1
这里有几个假设:
- id 每周都是唯一的(即在 2022-02-07 的一周内不能重复)
- 日期 在 7 天的周期内迭代(即每周有一个日期)