SQLite 按过去 7 天分组(不是每周!)

SQLite Group by last seven days (not weekly!)

我在这里查看了一些 GROUP BY 问题,但没有人跟我一样。

我的电流 table 是这样的:

|day   |  client|
----------------
|2020-01-07|id11|
|2020-01-07|id10|
|2020-01-06|id09|
|2020-01-06|id08|
|2020-01-05|id07|
|2020-01-04|id06|
|2020-01-03|id05|
|2020-01-03|id04|
|2020-01-02|id03|
|2020-01-01|id02|
|2020-01-01|id01|

我想创建一个新列,其中包含过去 7 天(第 6 天)(不是每周!)唯一客户的出现次数,并按天显示:

|day   |last 7 day clients|
----------------
|2020-01-07|11|
|2020-01-06| 9|
|2020-01-05| 7|
|2020-01-04| 6|
|2020-01-03| 5|
|2020-01-02| 3|
|2020-01-01| 2|

这里所有的回答都是每周分组!

我尝试了什么:

pd.read_sql_query("""SELECT DATE(day) dateColumn,  
                            COUNT(DISTINCT client) AS seven_day_users
                    FROM table
                    GROUP BY date(dateColumn, '-6 days')
                    ORDER BY dateColumn DESC;
                        """, conn)

但是结果是按天分组,没有按区间分组。

使用 table 和聚合的自连接:

SELECT t1.day,
       COUNT(DISTINCT t2.client) `last 7 day clients`
FROM tablename t1 INNER JOIN tablename t2
ON t2.day BETWEEN date(t1.day, '-6 day') AND t1.day
GROUP BY t1.day
ORDER BY t1.day DESC;

参见demo