我的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
答案 0 :(得分:1)
对于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