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_dia
和 dia
不能在同一个 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.
中的日期之间没有间隔时才有效
我正在努力使用 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_dia
和 dia
不能在同一个 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.