我正面临一个非常普遍的问题,即"为表格中的每个组选择前N行".
考虑一个包含id, name, hair_colour, score列的表.
我想要一个结果集,这样,对于每种头发颜色,让我获得前三名得分手的名字.
为了解决这个问题,我在Rick Osborne的博客文章"sql-getting-top-n-rows-for-a -class-query"中得到了我所需要的.
当我的分数相等时,该解决方案无法按预期工作.
在上面的例子中,结果如下.
id name hair score ranknum
---------------------------------
12 Kit Blonde 10 1
9 Becca Blonde 9 2
8 Katie Blonde 8 3
3 Sarah Brunette 10 1
4 Deborah Brunette 9 2 - ------- - - > if
1 Kim Brunette 8 3
Run Code Online (Sandbox Code Playgroud)
考虑一下这行4 Deborah Brunette 9 2.如果这也与Sarah相同(10),那么"褐发"型头发的排名将为2,2,3.
这是什么解决方案?