mysql常用的窗口函数_窗口函数和groupby一起用

mysql常用的窗口函数_窗口函数和groupby一起用本博客转自:https://blog.csdn.net/weixin_34384915/article/details/87551597窗口函数(OLAP实时分析处理函数),可以一般聚合函数无法实现的高级操作。诸如排序、生成序列号等功能。目前DBMS逐步都完成了对窗口函数的支持,唯独MySql不支持(但是Mysql8开始支持了)。1.窗口函数语…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

本博客转自:https://blog.csdn.net/weixin_34384915/article/details/87551597

窗口函数(OLAP 实时分析处理函数) ,可以一般聚合函数无法实现的高级操作。诸如排序、生成序列号等功能。目前 DBMS 逐步都完成了对窗口函数的支持,唯独 MySql 不支持(但是 Mysql 8 开始支持了)。

1. 窗口函数语法:

<窗口函数> OVER ([PARTITION BY <列清单>]
ORDER BY <排序用列清单>)

语法解释:

  • 窗口函数分两类 (1.能够作为窗口函数的聚合函数 2.RANK、DENSE_RANK、ROW_NUMBER 等专用窗口函数)

  • PARTITION BY : 设定排序的对象范围

  • ORDER BY : 指定按照哪一列、何种顺序进行排序

2. 专有开窗之一 (RANK函数)、快速了解开窗函数使用

RANK函数 : 用于计算记录排序的函数

9327494-fa780abef068e996.png

例子表

需求: 根据不同的商品种类(product_type),按照销售单价(sale_price) 从低到高的顺序排序 ?

9327494-0d9ef2f20f559093.png

答案解析

总结 :PARTITION BY 横向对表进行分组、ORDER BY 决定纵向排序的规则。通过 PARTITION BY 分组后的集合称为窗口。

2.1 不使用 PARTITION BY 情况下:

9327494-5e01646bd1987f7a.png

例子

换一个排序的开窗函数也是排序的试试:DENSE_RANK 函数

9327494-c7386f3ab34c621d.png

例子

再换一个排序的开窗函数也是排序的试试:ROW_NUMBER 函数

9327494-a3cd886a398f4903.png

例子

总结 : DENSE_RANK 、RANK、ROW_NUMBER 都是排序的。DENSE_RANK 在处理并列值的时候,并列值不占位。ROW_NUMBER 是排序是连续的,不管值是否相同

3. 聚合函数作为窗口函数使用

聚合函数作为窗口函数应用的场景一般为累计统计的时候
注意 在 sqlserver 2012以前不支持聚合函数开窗求和
看例子:


  
  
  
  1. SELECT
  2. product_id,
  3. product_name,
  4. sale_price,
  5. avg ( sale_price ) OVER ( ORDER BY product_id ) AS current_sum
  6. FROM
  7. Product;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/185925.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月4日 下午7:46
下一篇 2022年10月4日 下午7:46


相关推荐

  • 1200多套微信小程序源码-史上最全的不同行业的源码集合[通俗易懂]

    1200多套微信小程序源码-史上最全的不同行业的源码集合[通俗易懂]史上最全小游戏分类,需要的自行下载:下载链接在最后面!o2o行业| -盒马鲜生| -轻客洗衣互联网行业| -云文档| -仿ofo共享单车| -仿美团外卖| -仿饿了么| -灵犀外卖交友互动| -小契约(交友互动小程序)| -信息科技公司展示小程序| -华云智慧园区| -房地产公司展示企业应用| -企业OA系统小程序优惠券卡卷| -…

    2022年5月7日
    115
  • JMeter入门教程详解

    JMeter入门教程详解简介本文由 xmeter 君写给想了解性能测试和 JMeter 的小白 适合对这两者了解很少的同学们 如果已经有使用经验的请绕道 别浪费时间 我们将介绍 JMeter 的使用场景 如何安装 运行 JMeter 以及开始一个最最简单的测试 你还徘徊在 JMeter 的门口吗 别犹豫了 跟着本文做完 你就可以开启你的 JMeter 之旅了 JMeter 是开源软件 Apache 基金会下的一个性能测试工具 用来测试部署在服务器端的应用程序的性能 近来 JMeter 因为其使用简单 现在也被社区作为接口测试工具 啥 什么是性能测

    2026年3月20日
    2
  • OpenWRT(八)应用层开发

    OpenWRT(八)应用层开发一 应用层和 kernel 层很多人都是学习完单片机后才开始学嵌入式 Linux 的 刚开始学时都不能理解为什么写两个程序才能点亮 LED 以前单片机只要写一个程序进去 LED 就可以控制了啊 这就是操作系统带来的分层思想 其实我们也可以直接在驱动中直接控制 但是这就失去了操作系统的意义了 驱动程序是在 kernel 层 应用程序是在应用层 两者关系 应用 驱动 调用驱动去操作底层硬件 二 应用程序实例用例

    2026年3月18日
    2
  • centos7 文件名中文乱码_Linux服务器文件名乱码常见问题

    centos7 文件名中文乱码_Linux服务器文件名乱码常见问题1 CentOS 文件名显示乱码如下所示 原因在于 Windows 的文件名中文编码默认为 GBK 压缩或者上传后 文件名还会是 GBK 编码 而 Linux 中默认文件名编码为 UTF8 由于编码不一致所以导致了文件名乱码的问题 解决这个问题需要对文件名进行转码 处理方法 yuminstallco yconvmv fgbk tutf 8 rnotest public FTP o

    2026年3月26日
    2
  • docker镜像重启_docker怎么启动镜像

    docker镜像重启_docker怎么启动镜像docker常见镜像安装总结

    2026年2月14日
    6
  • Swift

    Swift

    2021年12月8日
    65

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号