我正在努力使用 Python 的 sqlite3 進行視窗框架編碼。基本我有這個資料框:

我想將同一天和同一周內的所有客戶(買賣)分組。我正在使用以下 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)在第一行。
感謝您的幫助!
uj5u.com熱心網友回復:
派生列不能在同一陳述句cons_dia中使用。
相反,您應該使用派生它們的運算式:diaSELECT
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;
請注意,您需要視窗函式的子句中ORDER BY的OVER()子句SUM()而不是PARTITION BY子句,如果您想要 7 天的視窗,則應將子句擴展到當前行之前的 6 行。
此外,這僅在表格中的日期之間沒有間隔時才有效。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/451665.html
