SQL中的LAG函数与LEAD函数用法

LAG:函数用于获取结果集中当前行之前的某一行的值

LAG (scalar_expression [,offset] [,default]) OVER ([partition_by_clause ] order_by_clause )
-----汉字解释
LAG (字段 [,偏移量默认为1] [,如果没有值时候默认值]) OVER ( [ partition_by 字段 ] order_by 字段 )

Lead:函数用于获取结果集中当前行之后的某一行的值

LEAD (scalar_expression [,offset] [,default]) OVER ([partition_by_clause ] order_by_clause )
-----汉字解释
LEAD (字段 [,偏移量默认为1] [,如果没有值时候默认值]) OVER ( [ partition_by 字段 ] order_by 字段 )

原数据

select * from tmp
 order_id | order_date | customer_name |  price   | product_id | order_status 
----------+------------+---------------+----------+------------+--------------
        1 | 2020-07-28 | Jark          | 50.50000 |        102 | f
        2 | 2020-07-29 | Sally         | 15.00000 |        105 | f
        3 | 2020-07-30 | Edward        | 25.25000 |        106 | f
        4 | 2020-07-31 | Edward        | 25.25000 |        106 | f
select *,lag(order_id,1,99) over(partition by order_status order by order_Date) from tmp;

 order_id | order_date | customer_name |  price   | product_id | order_status | lag 
----------+------------+---------------+----------+------------+--------------+-----
        1 | 2020-07-28 | Jark          | 50.50000 |        102 | f            |  99
        2 | 2020-07-29 | Sally         | 15.00000 |        105 | f            |   1
        3 | 2020-07-30 | Edward        | 25.25000 |        106 | f            |   2
        4 | 2020-07-31 | Edward        | 25.25000 |        106 | f            |   3
------------------------------------------------------------------------------------
select *,lead(order_id,1,99) over(partition by order_status order by order_Date) from tmp;

 order_id | order_date | customer_name |  price   | product_id | order_status | lead 
----------+------------+---------------+----------+------------+--------------+------
        1 | 2020-07-28 | Jark          | 50.50000 |        102 | f            |    2
        2 | 2020-07-29 | Sally         | 15.00000 |        105 | f            |    3
        3 | 2020-07-30 | Edward        | 25.25000 |        106 | f            |    4
        4 | 2020-07-31 | Edward        | 25.25000 |        106 | f            |   99

 lag和lead的用法中order by的顺序都是asc的,也就是这两个可以使用降序排序的写法就能等于另一个了,

lag()over(order by 字段 desc)=lead over(order by 字段)

lead()over (order by 字段 desc)=lag over(order by 字段)

相关推荐

  1. SQLLAG函数LEAD函数

    2024-05-15 15:46:11       13 阅读
  2. SQLPIVOT函数

    2024-05-15 15:46:11       33 阅读
  3. 掌握SQL时间序列分析利器:LEADLAG函数详解

    2024-05-15 15:46:11       10 阅读
  4. Python函数*args,**kwargs作用

    2024-05-15 15:46:11       37 阅读
  5. MATLABcell函数

    2024-05-15 15:46:11       40 阅读
  6. ExcelINDIRECT函数

    2024-05-15 15:46:11       45 阅读
  7. pythonprint函数

    2024-05-15 15:46:11       34 阅读
  8. pythonsplit函数

    2024-05-15 15:46:11       22 阅读
  9. C++ STLVector函数

    2024-05-15 15:46:11       18 阅读
  10. sqllag()和lead()是什么意思

    2024-05-15 15:46:11       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-15 15:46:11       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-15 15:46:11       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-15 15:46:11       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-15 15:46:11       20 阅读

热门阅读

  1. Spring中事务的失效场景

    2024-05-15 15:46:11       14 阅读
  2. Windows下打包项目成Linux版本

    2024-05-15 15:46:11       10 阅读
  3. Scala编程基础7:模式匹配、隐式转换详解

    2024-05-15 15:46:11       10 阅读
  4. 前端下载文件流

    2024-05-15 15:46:11       12 阅读
  5. 5.14 力扣每日一题 贪心

    2024-05-15 15:46:11       13 阅读
  6. dom驱动和数据驱动的理解

    2024-05-15 15:46:11       14 阅读
  7. Vue学习v-on

    2024-05-15 15:46:11       16 阅读
  8. 连接和断开与服务器的连接

    2024-05-15 15:46:11       11 阅读
  9. uniapp实现拖拽排序+滑动删除功能

    2024-05-15 15:46:11       15 阅读
  10. SQL Server BULK INSERT

    2024-05-15 15:46:11       15 阅读