sql

1 篇文章 0 订阅

行转列/列转行

  • 参考
    https://www.cnblogs.com/linJie1930906722/p/6036714.html

行转列

在这里插入图片描述

列转行

在这里插入图片描述

移动平均窗口函数

参考

  • https://zhuanlan.zhihu.com/p/150812199

定义

移动平均值的定义:若依次得到测定值(x1,x2,x3,…xn)时,按顺序取一定个数所做的全部算数平均值。例如(x1+x2+x3)/3,(x2+x3+x4)/3,(x3+x4+x5)/3,…就是移动平均值。其中,x可以是日或者月,以上的可以成为3日移动平均,或3月移动平均,常用于股票分析中。

语法

  • 语法结构:
avg(字段名) over(partition by 字段名 order by 字段名 asc/desc rows between A and B )
-- A和B是计算的行数范围
  • 影响行数的范围(限定计算移动平均的范围):
rows between 2 preceding and current row  # 取当前行和前面两行
rows between unbounded preceding and current row   # 包括本行和之前所有的行
rows between current row and unbounded following  # 包括本行和之后所有的行
rows between 3 preceding and current row   # 包括本行和前面三行
rows between 3 preceding and 1 following   # 从前面三行和下面一行,总共五行
当order by后面缺少窗口从句条件,窗口规范默认是rows between unbounded preceding and current row.
当order by和窗口从句都缺失, 窗口规范默认是 rows between unbounded preceding and unbounded following
  • 以v_info举个例子吧
SELECT *,
       AVG(grade) OVER(ORDER BY stu_no ROWS BETWEEN 2 preceding AND CURRENT ROW) AS '三移动平均'
FROM v_info

对于第一行来说,没有前面两行,所以值就为当前行的值
对于第二行来说,前面只有一行,所以三移动平均就为第一行和第二行的平均值
影响行数范围的语句在标准的聚合函数中都适用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值