首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL 窗口函数之头尾函数

本文标识 :MQ0018

本文编辑 :长安月下赏美人儿

编程工具 :MySQL、DBeaver

阅读时长 :6分钟

1、头尾函数

(1)应用场景:快速查看某个窗口范围中的第一个或者最后一个指定的字段的数值

(2)头尾函数分类及基础语法

(3)两种头尾函数的区别

first_value() 函数

指定排序字段,不同分区中,指定字段在窗口范围第一个值

last_value() 函数

指定排序字段,不同分区中,指定字段在窗口范围最后一个值

(4)实例比较两种头尾函数

数据结果:

注意:当函数后无指定分区及排序字段,即 over() 括号内容为空,则会出现上面的结果。

如果函数后有指定的分区及排序的字段又会如何呢?!

此刻,将分享的知识点为窗口的滑动函数!!!

2、滑动函数

(1)基础语法与头尾函数相似

(2)作用:在 over() 中以参数限制窗口分析范围

(3)表示行范围语法

(4)frame_start 和 frame_end 如下关键字,精准确定窗口函数分析范围

CURRENT ROW :边界是当前行,常与其他关键字组合使用

UNBOUNDED PRECEDING :边界是分区中的第一行

UNBOUNDED FOLLOWING :边界分区中的最后一行

expr PRECEDING:边界为以当前行减去 expr 数值

expr FOLLOWING:边界为以当前行加上 expr 数值

(5)举例

(6)实例展示窗口滑动函数

数据结果:

注意:经过对比发现,在没有加入限定范围的情况下,得到的结果,并不是理想中的结果。l2 数据列,数据值是混乱的,并不是每个分组中最小的值。

为什么会出现这种情况?!

因为,窗口函数,默认限制范围是第一行到当前行!!!

分析:

目前以 dimShopID 分成两组,且以 amt 数列倒序排列,理想中的结果 l2 数列,当 dimShopID =33 时,数值应当为 37,233.64;当 dimShopID =34时,数值应当为 44,691.52;

因窗口函数,默认限制范围是第一行到当前行,所以 l2 数列呈现与 amt 数列相同。

添加限制范围,则

数据结果:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191115A05ZCA00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券