1. RANK:
- 计算结果集中每行的排名。
SELECT column1, RANK() OVER (ORDER BY column1) AS ranking FROM table1;
2. DENSE_RANK:
- 计算结果集中每行的密集排名(排名相同的行具有相同的排名)。
SELECT column1, DENSE_RANK() OVER (ORDER BY column1) AS dense_rank FROM table1;
3. ROW_NUMBER:
- 为结果集中的每一行分配一个唯一的行号。
SELECT column1, ROW_NUMBER() OVER (ORDER BY column1) AS row_num FROM table1;
4. LEAD 和 LAG:
- 用于获取当前行之后或之前的行的值。
SELECT column1, LEAD(column1) OVER (ORDER BY column1) AS next_value FROM table1;
SELECT column1, LAG(column1) OVER (ORDER BY column1) AS prev_value FROM table1;
5. FIRST_VALUE 和 LAST_VALUE:
- 返回排序窗口中第一行和最后一行的值。
SELECT column1, FIRST_VALUE(column1) OVER (ORDER BY column1) AS first_val FROM table1;
SELECT column1, LAST_VALUE(column1) OVER (ORDER BY column1) AS last_val FROM table1;
这些分析函数通常与 OVER 子句一起使用,以定义分析窗口。分析函数在实现复杂的查询逻辑时非常有用,可以通过它们实现对结果集的更精细控制。具体的函数支持和语法可能会根据OceanBase的版本而有所不同,建议查阅官方文档以获取最准确的信息。
转载请注明出处:http://www.zyzy.cn/article/detail/11490/OceanBase