SQL查询进阶-开窗函数

2023-08-07  本文已影响0人  掌灬纹

简介

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

LAG函数

LAG(column_name, offset, default_value) OVER (PARTITION BY partition_column ORDER BY sort_column)

LEAD函数

LEAD(column_name, offset, default_value) OVER (PARTITION BY partition_column ORDER BY sort_column)

应用

  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
上一篇下一篇

猜你喜欢

热点阅读