[英]Get top N rows from table on the basis of group
我有下面幾列的Customer_Record表
customer_id | item_id | item_count
1 2 10
1 3 9
1 4 2
1 5 2
2 2 5
2 4 1
2 8 2
4 1 2
4 5 3
4 8 7
現在,我想基於item_count獲得每個客戶的前2個項目(items_id)。 請幫我弄清楚這一點。
結果像:
customer_id | item_id | item_count
1 2 10
1 3 9
2 2 5
2 4 1
4 1 2
對於mysql,您可以使用等級查詢來獲得每組的最佳結果
SELECT t.customer_id,
t.item_id,
t.item_count
FROM (
SELECT t.*,
@rank:= CASE WHEN @group = t.customer_id THEN @rank +1 ELSE 1 END rank ,
@group:= t.customer_id
FROM
t
JOIN (SELECT @group:='',@rank:='') t1
ORDER BY t.customer_id ,item_count DESC
) t WHERE t.rank <=2
Fiddle Demo
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.