SQL常用函数(有用,但记不住)
1、ROW_NUMBER(): 为查询结果集中的每一行分配一个唯一的整数值。
SELECT ROW_NUMBER() OVER (
[PARTITION BY col1, col2, ...] -- 可选:按指定列分组,每组内单独排序
[ORDER BY col3 [ASC|DESC], col4 [ASC|DESC], ...] -- 必选:指定排序规则,序号按此生成
) AS 别名 -- 给生成的序号列起一个别名,方便引用
FROM table;
经常结合PARTITION BY使用
2、RANK(): 计算每一行在排序结果中的排名。
SELECT col1, col2, RANK() OVER (ORDER BY col1 DESC) AS ranking
FROM table;
3、DENSE_RANK(): 计算每一行在排序结果中的排名,保留相同的排名。
SELECT col1, col2, DENSE_RANK() OVER (ORDER BY col1 DESC) AS ranking
FROM table;
4、NTILE(n): 将结果分成 n 个基本均匀的桶,并为每个桶分配一个标识号。
SELECT col1, col2, NTILE(4) OVER (ORDER BY col1) AS bucket
FROM table;
5、SUM(), AVG(),COUNT(), MIN(), MAX(): 这些聚合函数也可以与窗口函数结合使用,计算窗口内指定列的汇总、平均值、计数、最小值和最大值。
SELECT col1, col2, SUM(col1) OVER () AS sum_col
FROM table;
6、LEAD() 和 LAG(): LEAD 函数用于获取当前行之后的某个偏移量的行的值,而 LAG 函数用于获取当前行之前的某个偏移量的行的值。
SELECT col1, col2, LEAD(col1, 1) OVER (ORDER BY col1) AS next_col1,
LAG(col1, 1) OVER (ORDER BY col1) AS prev_col1
FROM table;
7、FIRST_VALUE() 和 LAST_VALUE(): FIRST_VALUE 函数用于获取窗口内指定列的第一个值,LAST_VALUE 函数用于获取窗口内指定列的最后一个值。
SELECT col1, col2, FIRST_VALUE(col2) OVER (PARTITION BY col1 ORDER BY col2) AS first_val,
LAST_VALUE(col2) OVER (PARTITION BY col1 ORDER BY col2) AS last_val
FROM table;
**窗口函数通常需要配合 OVER 子句一起使用,用于定义窗口的大小、排序规则和分组方式。
**

浙公网安备 33010602011771号