SQLite3 window 按日期时间的框架分区不起作用

Sqlite3 window frame partition by datetime not working

我正在努力使用 Python 的 sqlite3 进行 window 帧编码。基本我有这个数据框:

我想将同一天和同一周内的所有客户(买入和卖出)分组。 我正在使用以下 sqlite3 代码:

pd.read_sql_query("""SELECT strftime('%Y-%m-%d', execution_time) AS dia,
                            COUNT(customer_id) AS cons_dia,
                            SUM(cons_dia) OVER
                                PARTITION BY dia
                                ROWS BETWEEN 7 PRECEDING AND CURRENT ROW) AS seven_day
                        FROM trades
                        ORDER BY dia DESC;""", conn)

我不确定我做错了什么,它说“dia”有问题(我认为这意味着行 PARTITION BY dia。Sqlite3 不识别白天,这就是为什么我需要到第一行的strftime('%Y-%m-%d', execution_time)

感谢您的帮助!

派生列 cons_diadia 不能在同一个 SELECT 语句中使用。
相反,您应该使用派生它们的表达式:

SELECT date(execution_time) AS dia,
       COUNT(customer_id) AS cons_dia,
       SUM(COUNT(customer_id)) OVER (
         ORDER BY date(execution_time)
         ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
       ) AS seven_day
FROM trades
GROUP BY dia
ORDER BY dia DESC;

请注意,在 SUM() window 函数的 OVER() 子句中需要一个 ORDER BY 子句,而不是 PARTITION BY 子句,它应该是如果您想要 7 天 window.
,则扩展到当前行之前的 6 行 此外,这仅在 table.

中的日期之间没有间隔时才有效