分组后分区:partition by
SELECT * FROM(
SELECT * ,rank() over(PARTITION BY cid ORDER BY score DESC) rk
FROM sc) s
WHERE s.rk<=3
1.row_number (连续不重复)
row_number函数时必须要用over子句选择对某一列进行排序才能生成序号。row_number用法实例:
select ROW_NUMBER() OVER(order by [SubTime] desc) as row_num,* from [Order]
2.rank(重复不连续)
rank函数考虑到了over子句中排序字段值相同的情况,如果使用rank函数来生成序号,over子句中排序字段值相同的序号是一样的,后面字段值不相同的序号将跳过相同的排名号排下一个