0
我有我的表,它記錄客戶購買的物品的以下字段:過濾行
customer_id, item_id, week_id
,我想過濾此表僅限於每週至少購買1件商品的顧客,至少連續5周。
我目前的想法是在customer_id和week_id字段上使用DISTINCT,然後在customer_id上執行GROUP BY。但是,我不知道應該使用哪個集合函數,或者如果我應該使用UDF函數來完成它(所以我的聚合函數會將week_id分組到集合中,然後在此集合上應用我的UDF)。
另一種方法是創建一個week_id_1,week_id_2,week_id_3,week_id_4列,以便根據week_id列填充增加的值,然後在表上自己執行5次LEFT JOIN(on week_id ,然後在week_id_1上,然後在week_id_2上等)。這似乎很昂貴,我想知道是否沒有更好的方法。
任何幫助將不勝感激,因爲我不是很熟悉SQL。
好吧,這是比我的第二個方法,有點相同的方法清潔你不創建列week_id_1,week_id_2,week_id_3,week_id_4,但使用加入這樣做。 但是,這意味着我需要4個連接,如果我沒有弄錯,這是一個非常昂貴的操作。它是解決這類問題的標準方法嗎(例如,加入表格來分析幾行之間的依賴關係),還是有一種更有效的方法來實現,而沒有多少聯接? –
因爲讓我說我不想接下來的5周,但接下來的20周。那將意味着19個連接,這將非常昂貴。 –
@KestemontMax。 。 。 20周是與5周不同的問題。 –