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

这里有几个假设:

  1. id 每周都是唯一的(即在 2022-02-07 的一周内不能重复)
  2. 日期 在 7 天的周期内迭代(即每周有一个日期)