概念

RANK():排序相同时会重复,总数不会变。

DENSE_RANK():排序相同时会重复,总数会减少.

ROW_NUMBER():会根据顺序排算。

实操讲解

现在有一张score表

hive详解——RANK()、DENSE_RANK()、ROW_NUMBER()

做查询操作:

SELECT
	*, RANK () over (
		PARTITION BY SUBJECT
		ORDER BY
			score DESC
	) AS RANK,
	DENSE_RANK () over (
		PARTITION BY SUBJECT
		ORDER BY
			score DESC
	) AS DENSE_RANK,
	ROW_NUMBER () over (
		PARTITION BY SUBJECT
		ORDER BY
			score DESC
	) AS ROW_NUMBER
FROM
	score;

结果:

hive详解——RANK()、DENSE_RANK()、ROW_NUMBER()

通过英语学科来看:

RANK排序相同时会重复,总数4个不会变,直接跳过了第2,排名为1134。

DENSE_RANK排序相同时会重复,总数减少变成3个,排名为1123。

ROW_NUMBER根据顺序排算,总数4个不会变,排名为1234

相关文章: