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
View Code

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条,依此类推

posted @ 2017-03-11 00:24  老糖  Views(184)  Comments(0Edit  收藏  举报