SQL窗口函数之LAG函数

本文详细介绍了SQL中的LAG窗口函数,如何计算销量环比增幅、占比以及在股票数据分析中的应用,展示了如何使用LAG函数访问前后行数据并计算差分。
摘要由CSDN通过智能技术生成

SQL窗口函数之LAG函数

例子

-- 计算销量环比增幅
SELECT amount / lag(amount) OVER (ORDER BY time) FROM sales;

-- 计算每一行的销量占所属地区的销量百分比
SELECT amount / sum(amount) OVER (PARTITION BY region) FROM sales;

-- 计算差分
SELECT amount - lag(amount) OVER (ORDER BY time) FROM sales;

LAG

在 SQL 中,LAG函数是一种窗口函数,它用于访问结果集中当前行的前面的行中的数据。它常常用于分析数据中的时间序列或其他按照某种顺序排列的数据。LAG函数允许你在查询结果中回看若干行,并从中提取信息,非常适合用来进行数据比较或计算数据变化。

语法

LAG函数的基本语法如下:

LAG(expression, offset, default) OVER (partition_order_by_clause)
  • expression: 这是你希望从前面的行中获取的字段或计算表达式。
  • offset: 这是一个可选参数,用于指定你想要回看多少行。默认值是 1,表示回看前一行。
  • default: 这也是一个可选参数,用来定义当没有足够的行可供回看时的返回值(即当前行之前的行数少于指定的 offset)。如果未指定,当没有可回看的行时,默认返回 NULL
  • partition_order_by_clause: 这定义了 LAG 函数操作的数据窗口。它通常包含 ORDER BY 子句来指定数据的排序方式,也可以包含 PARTITION BY 子句来分组数据。

示例

当输入如下查询语句,查询股票数据的差分

SELECT 
    date,
    InnerCode,
    close,
    close - LAG(close, 1, NULL) OVER (PARTITION BY InnerCode ORDER BY date) AS close_change
FROM 
    stk_day
WHERE
    date >= '2019-01-01' AND date <= '2019-01-07';

返回结果如下:

dateInnerCodecloseclose_change
2019-01-02 00:00:00857.16nan
2019-01-03 00:00:00857-0.16
2019-01-04 00:00:00857.120.12
2019-01-07 00:00:00857.150.03
2019-01-02 00:00:0039.19nan
2019-01-03 00:00:0039.280.09
2019-01-04 00:00:0039.750.47
2019-01-07 00:00:0039.74-0.01
  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值