美文网首页
SQL查询进阶-开窗函数

SQL查询进阶-开窗函数

作者: 掌灬纹 | 来源:发表于2023-08-07 17:44 被阅读0次

简介

开窗函数又称分析函数,是用于对数据库数据进行实时分析处理。窗口函数就是为了实现OLAP而添加的标准SQL功能。下面重点介绍Lag函数 和 Lead函数使用方法,分别用于获取在某些条件限制下列表数据中当前行之前或之后 偏移 n 行的值,通常在需要比较相邻行数据或进行时间分析时使用。

LAG函数

  • Lag 函数用于获取 当前行之前 的某一列的值。它可以帮助我们查看上一行的数据。
  • 语法如下
LAG(column_name, offset, default_value) OVER (PARTITION BY partition_column ORDER BY sort_column)
  • 参数示意
    1) column_name:要获取值的列名。
    2)offset:表示要向上偏移的行数。例如,offset为1表示获取上一行的值,offset为2表示获取上两行的值,以此类推。
    3)default_value:可选参数,用于指定当没有前一行时的默认值。
    4)PARTITION BY和ORDER BY子句可选,用于分组和排序数据。

LEAD函数

  • Lead 函数用于获取 当前行之后 的某一列的值。它可以帮助我们查看下一行的数据。
  • 语法如下
LEAD(column_name, offset, default_value) OVER (PARTITION BY partition_column ORDER BY sort_column)
  • 参数示意
    1) column_name:要获取值的列名。
    2)offset:表示要向下偏移的行数。例如,offset为1表示获取下一行的值,offset为2表示获取下两行的值,以此类推
    3)default_value:可选参数,用于指定当没有前一行时的默认值。
    4)PARTITION BY和ORDER BY子句可选,用于分组和排序数据。

应用

  1. 学生成绩表 scores,其中包含学号、成绩和考试日期,数据如下:
student_id exam_date score
101 2023-01-01 85
101 2023-01-05 78
101 2023-01-10 92
101 2023-01-15 80
  1. 要求:查询每个学生所有参加的考试日期和上一次考试的成绩和下一次考试成绩,用于观察学生考试成绩浮动,示例SQL如下:
SELECT 
    student_id,
    exam_date,
    score,
    LAG(score, 1, NULL) OVER (PARTITION BY student_id ORDER BY exam_date) AS previous_score,
    LEAD(score, 1, NULL) OVER (PARTITION BY student_id ORDER BY exam_date) AS next_score
FROM
    scores;

3.查询结果

student_id exam_date score previous_score next_score
101 2023-01-01 85 NULL 78
101 2023-01-05 78 85 92
101 2023-01-10 92 78 80
101 2023-01-15 80 92 NULL

相关文章

  • SQL SERVER的开窗函数

    T-SQL里可以使用开窗函数,能解决很多较难的问题和复杂查询。 常用的开窗函数有:row_number() ove...

  • SQL常用开窗函数

    1、基础用法,sql server over()可以是为空,那样就是把整个表当成一个分区 假设有表格 输出结果:O...

  • SQL总结-开窗函数

    一 . 开窗函数 分组函数 开窗函数 分组与开窗的区别分组函数每组只返回一行,而开窗函数每组返回多行。如下: 分组...

  • Spark SQL 开窗函数

    谈到 SQL 的开窗函数,要说到HIVE了,因为这个是HIVE支持的特性,但是在Spark SQL中支持HIVE...

  • 第九章 SQL查询数据库(二)

    第九章 SQL查询数据库(二) 调用用户定义函数的查询 InterSystems SQL允许您在SQL查询中调用类...

  • mysql操作

    sql一些函数,复杂查询等基本操作 sql脚本 函数GROUP_CONCAT -GROUP_CONCAT 这个函数...

  • sql性能优化

    sql性能优化 1.mysql缓存,在执行多次相同查询时,查询结果会放在缓存中,但是如果查询sql中有函数的时候,...

  • BI-SQL丨开窗函数(一)

    开窗函数(一) 开窗函数在SQL语句中属于一种特殊的用法。开窗函数的引入,是为了既可以显示聚集前的数据,也要显示聚...

  • MySQL-SQL基本查询

    SQL查询 执行顺序 where ... group by ... select ... 聚合函数 from .....

  • MySQL(二)

    SQL查询 执行顺序 where ... group by ... select ... 聚合函数 from .....

网友评论

      本文标题:SQL查询进阶-开窗函数

      本文链接:https://www.haomeiwen.com/subject/kimgpdtx.html