sql高级语法之窗口函数调用

简介: 代码如下
  • DENSE_RANK():为组内值生成连续排序号,其中,相同值具有相同序号
  • LAG():为组内对应值生成滞后值
  • LEAD():为组内对应值生成提前值
  • RANK():为各组内值生成跳跃排序序号,其中,相同的值具有相同序号
  • ROW_NUMBER():为各组内值生成连续排序序号,其中,相同的值其序号也不相同

创建表

create table T_num(
     num int
     );
insert into T_num values(1),(1),(2),(3),(3),(3),(4),(4),(5);

2345_image_file_copy_605.jpg

sql中的over函数和其它函数配合使用,可生成行号

DENSE_RANK()

为组内值生成连续排序号,其中,相同值具有相同序号。

 select num,DENSE_RANK() OVER(order by num) AS 'DENSE_RANK' from T_num;

2345_image_file_copy_606.jpg

右侧为对num的排序序号,DENSE_RANK()的排序规则为,如果数字相等则排序的序号相等,且相等序号不占一位,下一个数的排序序号从此序号加1开始。

RANK()

为各组内值生成跳跃排序序号,其中,相同的值具有相同序号。

select num,RANK() OVER(order by num) AS 'RANK' from T_num;

2345_image_file_copy_607.jpg

RANK()函数的排序规则为,如果数字相等则排序的序号相等,且每一个相等序号隐含占一位,下一个数的排序序号从此序号加上所有的此序号的个数开始,如上图num=2的序号=1+2=3.,即它会“跳跃”。

ROW_NUMBER()

为各组内值生成连续排序序号,其中,相同的值其序号也不相同。

select num,ROW_NUMBER() OVER(order by num) AS 'RANK' from T_num;

2345_image_file_copy_608.jpg

ROW_NUMBER()的排序规则为,所有数字按连续序号排序,相同的num也需要排出1、2、3…LAG()

为组内对应值生成滞后值。

select num,LAG(NUM) OVER(order by num) AS 'LAG' from T_num;

2345_image_file_copy_609.jpg

即将其选中的项滞后一位输出,第一位补为NULL,其余按需输出,最后一位不输出

LEAD()

LEAD()函数恰好与LAG()函数相反。为组内对应值生成提前值。

 select num,LEAD(NUM) OVER(order by num) AS 'LEAD' from T_num;

2345_image_file_copy_610.jpg

相关文章
|
2月前
|
SQL
SQL 的 AND、OR 和 NOT 运算符:条件筛选的高级用法
SQL的AND运算符用于根据多个条件筛选记录,确保所有条件都为TRUE才返回记录。下面是AND运算符的基本语法:
39 1
|
2月前
|
SQL Oracle 关系型数据库
SQL 中的运算符与别名:使用示例和语法详解
IN运算符允许您在WHERE子句中指定多个值,它是多个OR条件的简写
184 0
|
2月前
|
SQL Oracle 关系型数据库
|
2月前
|
SQL 存储 大数据
【大数据技术Hadoop+Spark】Hive基础SQL语法DDL、DML、DQL讲解及演示(附SQL语句)
【大数据技术Hadoop+Spark】Hive基础SQL语法DDL、DML、DQL讲解及演示(附SQL语句)
47 0
|
25天前
|
SQL Oracle 关系型数据库
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作
74 0
|
2天前
|
SQL 关系型数据库 MySQL
玩转SQL窗口函数
玩转SQL窗口函数
13 0
|
19天前
|
SQL
Sql语法:字段不为空
Sql语法:字段不为空
|
1月前
|
SQL 数据采集 分布式计算
Spark SQL中的聚合与窗口函数
Spark SQL中的聚合与窗口函数
|
1月前
|
存储 SQL 关系型数据库
SQL联结表及高级联结
SQL联结表及高级联结
20 0
|
1月前
|
SQL OLAP Serverless
第五章:SQL高级处理---SQL学习笔记
第五章:SQL高级处理---SQL学习笔记
32 0