SQL RANK、DENSE_RANK、NTILE
现有数据如下:
1 SELECT 2 *, 3 ROW_NUMBER() OVER (ORDER BY 科目) AS 'Row Number', 4 RANK() OVER (ORDER BY 科目) AS 'Rank', 5 DENSE_RANK() OVER (ORDER BY 科目) AS 'Dense Rank', 6 NTILE(4) OVER (ORDER BY 科目) 'NTILE' 7 FROM Table_A
RANK:如果多个行具有相同的顺序值(比如 都为化学),则允许这些行具有相同的值(比如:化学的都为1,数学的都2),计数以具有相同值的行为单位从1开始连续计数,例如 化学有6行(都为1),到了数学虽然有了6行化学 但数学还是从2开始计数。
DENSE_RANK:仍然是具有相同顺序值就具有相同值,但排名始终是递增的; 例如 化学都为1 到了数学 因为前面有了6行数学 所以数学的 都是7
NTILE(X): 将总的结果划分为X个类别,从1--X开始对这些类别排名;因此,NTILE(4) 就是将结果分为4组,假设查询结果为100条数据,则会将这100条数据分成4组每组25条数据。上面数据有21条分为4组,则第一组为6条,依此类推