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年6月7日
    49
  • 快手用户群体分析_抖音、快手竞品分析报告

    快手用户群体分析_抖音、快手竞品分析报告一、产品初步体验介绍体验环境:RedmiNote5A体验时间:2018.7体验人:Cinnamon抖音快手抖音的logo以暗黑色为底,一个大大的亮白立体音符占据中央,强调了抖音重点在于结合音乐,给人的第一感觉就是炫酷,符合年轻人的审美。快手的logo以黄色为主,是一个立体的摄像机,体现了快手重点在于记录。应用首页抖音的底部button遵循传统的排版:刷新-附近/推荐(首页)、关注、拍摄、消息和我…

    2022年5月10日
    89
  • Mysql主主模式和主键id冲突问题

    Mysql主主模式和主键id冲突问题Mysql双机热备,简单的说,就是要保持两台数据库的数据同步。始终保持两个数据库数据一致。 主要有主备方式、双主方式;,实现双主互备,双主都可以写入;实现简单的负载均衡。问题描述:因为多主中都可以对服务器有写权限,所以设计到自增长重复问题 解决方法: 我们只要保证两台服务器上插入的自增长数据不同就可以了 如:A插入奇数ID,B插偶数ID,当然如果服务器多的话,你可以定…

    2022年6月13日
    30
  • js数组删除指定数据方法「建议收藏」

    js数组删除指定数据方法「建议收藏」js数组中删除指定数据1,splice删除(配合indexOf()方法)2,filter删除3,Set删除

    2022年10月1日
    1
  • mac版idea2021激活码【在线注册码/序列号/破解码】

    mac版idea2021激活码【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    41
  • 3.RT-thread 项目实战–LED驱动及finsh组件调试

    3.RT-thread 项目实战–LED驱动及finsh组件调试RT-thread在19年12月份推出了一个很好用的工具RT-threadstdio,比Env更加的方便,接下来的代码开发我们就使用这个工具进行,不使用keil和IAR了。工具的一些配置和入门使用直接看官方的教学视频就可以了,这里我们不做过多的介绍,下面开始进入今天的正题。打开我们的软件后,点击文件–》新建–》RT-thread项目,然后取个项目名字,就叫temp_prj吧,然…

    2022年5月21日
    39

发表回复

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

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