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 子句一起使用,用于定义窗口的大小、排序规则和分组方式。
**

posted @ 2026-01-14 18:59  JAVA从零开始  阅读(1)  评论(0)    收藏  举报