簡體   English   中英

根據組從表中獲取前N行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM