ClickHouse 排名
函数
(Ranking Functions)是 ClickHouse
数据库
中的一组内置函数,用于生成排名和排序结果。它们是在
SQL
标准基础上进行扩展的,提供了更灵活的排序和排名功能。本篇文章将介绍 ClickHouse 排名
函数
及其用法,并给出一些代码示例。
ClickHouse 排名
函数
主要有以下几种:
row_number
row_number()
函数
用于为结果集中的每一行生成一个唯一的数字。
SELECT row_number() FROM mytable;
rank()
函数用于计算排名。如果存在并列的值,那么它们的排名将相同,所以排名可能会出现跳跃。
SELECT rank() FROM mytable ORDER BY value DESC;
dense_rank
dense_rank()
函数也用于计算排名,但是如果存在并列的值,它们的排名将相同,排名不跳跃。
SELECT dense_rank() FROM mytable ORDER BY value DESC;
percent_rank
percent_rank()
函数用于计算每个值在排序结果中的相对位置。返回值是一个小数,表示某一值在全部值中的排名百分比。
SELECT percent_rank() FROM mytable ORDER BY value DESC;
ntile
ntile(n)
函数用于将结果集分为 n 个等份。返回值是一个整数,表示某一行所处的分组。注意:n 必须是正整数。
SELECT ntile(4) FROM mytable ORDER BY value DESC;
cume_dist
cume_dist()
函数用于计算已排序数据中某一值的相对位置。返回值是一个小数,表示某一值在全部值中的累计分布。它与 percent_rank() 函数的区别在于 cume_dist() 包括了这一值之前的所有值,而 percent_rank() 只包括比这一值小的值。
SELECT cume_dist() FROM mytable ORDER BY value DESC;
下面是一个综合示例,展示以上所有函数的用法:
WITH mytable AS (
SELECT 1 AS id, 10 AS value UNION ALL
SELECT