我有以下用戶的訂單表,如下所示:
CREATE TABLE orders (
order_id UUID,
user_id UUID,
date date,
order_type integer
);
我想撰寫 SQL 來執行以下操作:
- 對于想要計算用戶在前一周(7 天)內的訂單數量的每個訂單。

寫如下,但它計算每個用戶的訂單數,而不是兩個級別的groupby。
SELECT order_id, user_id,
COUNT(order_id) OVER(PARTITION BY user_id ORDER BY date ROWS BETWEEN 7 PRECEDING AND CURRENT ROW) as num_orders_7days
FROM orders
uj5u.com熱心網友回復:
您應該使用RANGE子句而不是ROWS正確的日期間隔:
SELECT order_id, user_id, date,
COUNT(order_id) OVER (
PARTITION BY user_id
ORDER BY date
RANGE BETWEEN INTERVAL 7 day PRECEDING AND INTERVAL 1 day PRECEDING
) as num_orders_7days
FROM orders;
請參閱演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/474797.html
