我有这张桌子:
我想要GROUP BY
类别,然后只选择前2个产品的Name
,Category
和Rating
。
所以最终输出应该是这样的:
Id Name Category Rating
1 Iphone Electronics 5
7 MI Electronics 5
4 Top Fashion 5
9 Shoes Fashion 5
10 Coffe Food 5
11 jAM Food 4
我试图通过我的方式解决但仍然没有运气。 我希望每个类别的前2个结果基于评级,如果一个类别有两个相同评级的产品,如5,则结果应显示两者。
我是stackOverFlow的新手,这是我的第一个问题,我不太了解礼仪和规则,但我会学习。
很抱歉,如果我违反任何规则。
答案 0 :(得分:3)
您可以这样做:
select *
from (
select *,
rank() over (partition by Category order by Rating desc) as Rank
from yourtable
) X
where Rank <= 2
如果您的评分相同,您可能需要查看排名与密集排名的差异。