rank 函數用于對數據集中的值進行排名,返回每個值在排序后的列表中的位置。語法:rank([sort_order,] expression, partition_by_clause, order_by_clause)。用法包括:升序或降序排名、帶分區的分組排名、帶排序條件的分組排名。
rank 函數的用法
什么是 rank 函數?
rank 函數用于對數據集中的值進行排名,從高到低或從低到高,并返回每個值在排序后的列表中的位置。
語法:
RANK([sort_order,] expression, partition_by_clause, order_by_clause)
參數:
- sort_order (可選):指定排序順序(升序或降序),默認為升序。
- expression:要排名的表達式。
- partition_by_clause (可選):指定對數據進行分區的列。
- order_by_clause (可選):指定排序的列。
用法:
基本用法(升序):
SELECT RANK() OVER (ORDER BY sales) FROM sales_table;
這將對 sales_table 中的 sales 列進行升序排列,并返回每個 sales 值的排名。
基本用法(降序):
SELECT RANK(DESC) OVER (ORDER BY sales) FROM sales_table;
這將對 sales_table 中的 sales 列進行降序排列,并返回每個 sales 值的排名。
帶分區的分組排名:
SELECT RANK() OVER (PARTITION BY region ORDER BY sales) FROM sales_table;
這將對 sales_table 中的數據按 region 列進行分區,然后在每個分區內對 sales 列進行升序排列。
帶排序條件的分組排名:
SELECT RANK() OVER (PARTITION BY region ORDER BY sales DESC) FROM sales_table;
這將對 sales_table 中的數據按 region 列進行分區,然后在每個分區內對 sales 列進行降序排列。