Redshift
在 Redshift 中為每位客戶找到前 2 次購買的最快方法是什麼?
我正在尋找每個客戶的前 2 次購買。
我有一個看起來像這樣的表:
orders
帶列:
order_id customer_email grand_total purchase_date
該表中有數百萬行,我正在嘗試尋找一種有效的方法來獲取每個客戶的前兩條最早記錄,以便獲得如下所示的結果集:
order_id customer_email purchase_date1 purchase_date2
我不知道如何有效地做到這一點。
假設有一個單獨的
customers
表和一個複合索引orders(customer_email, purchase_date)
,這樣的事情會做到:select customer_email, array( select order_id from orders where customer_email = c.customer_email order by purchase_date limit 2 ) as order_ids from customers c;
使用視窗函式可能是一種選擇:
select * from ( select customer_email, purchase_date, order_id, row_number() over (partition by customer_email order by purchase_date) rn from orders ) t where rn < 3