Welcome to aparke’s blog!
分组 TopN 问题
实现每个班级成绩前两名的学生信息
more >>在mysql的最新版本mysql8已经支持了排名函数RANK,DENSE_RANK和ROW_NUMBER。但是在就得版本中还不支持这些函数,只能自己实现。实现方法主要用到了条件判断语句(CASE WHEN或IF)和添加临时变量。
区别RANK,DENSE_RANK和ROW_NUMBER
RANK并列跳跃排名,并列即相同的值,相同的值保留重复名次,遇到下一个不同值时,跳跃到总共的排名。
DENSE_RANK并列连续排序,并列即相同的值,相同的值保留重复名次,遇到下一个不同值时,依然按照连续数字排名。
ROW_NUMBER连续排名,即使相同的值,依旧按照连续数字进行排名。这些函数再hive中都有实现 hive的窗口分析函数