当前位置: 首页 > news >正文

窗口函数sql使用总结

一、开窗

基础知识:窗口分析函数
(1)LAG(col,n,DEFAULT) 用于统计窗口内往上第n行值

第一个参数为列名,第二个参数为往上第n行(可选,默认为1),第三个参数为默认值(当往上第n行为NULL时候,取默认值,如不指定,则为NULL);

(2)LEAD(col,n,DEFAULT) 用于统计窗口内往下第n行值

第一个参数为列名,第二个参数为往下第n行(可选,默认为1),第三个参数为默认值(当往下第n行为NULL时候,取默认值,如不指定,则为NULL);

(3)FIRST_VALUE(col) 取分组内排序后,截止到当前行,第一个值;

(4)LAST_VALUE(col) 取分组内排序后,截止到当前行,最后一个值;

1、查询上一行数据的值。

select * ,lag(product_num,1,null) over(order by save_date asc) as pre_product_num from test_product 

 2、开窗函数,每行数据记录最大值、最小值、sum 而不是用group by。  

用窗口函数,可以查字段所有信息,group by 的select只能是分组字段信息,有些场景很有用

按产品类目分组,查询平均值、最大值、最小值等等

select *,  avg(price) over ( PARTITION BY category_name ) AS avg_price,sum(amount) over(PARTITION BY category_name),lag(product_num,1,null) over(order by save_date asc) as pre_product_num

from product

二、rows between的基本使用

基础知识

 rows between

  • preceding:往前
  • following:往后
  • current row:当前行
  • unbounded:起点
  • unbounded preceding:表示从前面的起点
  • unbounded following:表示到后面的终点


1、查询前n条数据平局值

    select *,avg(product_num) over(order by save_date desc rows BETWEEN unbounded preceding and current row) as avg_n  from test_product

2、查询当前行数据前2条到当前行数的和

        select *,sum(product_num) over(order by save_date desc rows BETWEEN 2 preceding and current row) as sum_n from test_product

3、查询当前行数据之后的所有行数据的和

select *,sum(product_num) over(order by save_date desc rows BETWEEN current row and unbounded following) as sum_n from test_product

4、查询当前行前1行后1行当前行,3行数据的和

        select *,sum(product_num) over(order by save_date desc rows BETWEEN  1 preceding and 1 following) as sum_n from test_product

http://www.lryc.cn/news/470879.html

相关文章:

  • python单因素分析
  • 「C/C++」C++ STL容器库 之 std::list 双向链表容器
  • 应用程序框架进阶<HarmonyOS第一课>
  • 【C++】vector<string>-动态数组存储多个string
  • 66Analytics 汉化版,网站统计分析源码,汉化前台后台
  • 蓝桥杯单片机STC15F2K60S2第十四届省赛代码详细讲解(附完整代码)
  • [免费]SpringBoot+Vue智慧校园(校园管理)系统[论文+源码+SQL脚本]
  • 景区导航地图怎么实现?基于LBS与3D GIS的智慧景区导航导览系统技术路线
  • RedisIO多路复用
  • C++的相关习题(2)
  • C++《vector的模拟实现》
  • 无人机避障——路径规划篇(一) JPS跳点搜索算法A*算法对比
  • OpenCV ORB角点检测匹配和偏移计算
  • 图文详解ChatGPT-o1完成论文写作的全流程
  • 在线体验Sketch中文版,免费下载即刻上手!
  • Redis——缓存
  • RHCSA笔记三
  • 【python】sorted() list.sort()
  • 训练集alpaca、sharegpt格式
  • Hive的数据存储格式
  • Linux Rsyslog 配置
  • python实现放烟花效果庆祝元旦
  • 模型训练识别手写数字(二)
  • 深入Vue2
  • opencv-rust 系列3: Create_mask
  • Go语言初识
  • Android Activity SingleTop启动模式使用场景
  • PHP 代码执行相关函数
  • 五周年,继续破浪前行
  • 【操作系统】Linux之进程管理一