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;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • CreatePipe 函数[通俗易懂]

    CreatePipe 函数[通俗易懂]创建管道共享数据[code="C++"]//创建匿名管道SECURITY_ATTRIBUTESsa;HANDLEhRead,hWrite;sa.nLength=sizeof(SECURITY_ATTRIBUTES);sa.lpSecurityDescriptor=NULL;sa.bInheritHandle=TRUE;CreatePipe(…

  • 推荐一个 curl 命令转化为PHP代码的网站&&在线发起执行 curl 请求的网站

    推荐一个 curl 命令转化为PHP代码的网站&&在线发起执行 curl 请求的网站

  • MAC电脑用adb命令安装APK

    MAC电脑用adb命令安装APK目录开始过程结果开始分别在命令行里面输入以下命令:touch.bash_profileopen-e.bash_profilesource.bash_profileadbversion过程这个时候会弹出一个这种框需要你配置路径比如我的路径是这个命令:exportPATH=${PATH}:–…

  • JAVA实现文件预览功能

    JAVA实现文件预览功能(PS前阵子发现图片没了,CSDN也没修复好,只好重新上传)近期做的项目要求实现文件在线预览功能,可支持多种文件类型,TXT,DOC,PDF,XLS,最好支持压缩包的预览功能.没办法,只能网上找啊.看了个遍,都是些不靠谱的,转来转去的一个能用的都没有,付费的产品有什么永中啊,OFFICE365啊,这些大概一搜都能搜到,价格也不是很贵但俗话说的好,能不用钱解决问题,就尽…

  • 迁移学习简介及用途[通俗易懂]

    迁移学习简介及用途 https://mp.weixin.qq.com/s/5_EYEJUycTtpfbxM_uGwHw  ———————本文来自mishidemudong的CSDN博客  深度神经网络,相比于之前的传统机器学习方法,可以看成是一个全新的物种,这背后的原因,最明显的还是深度学习对机器算力的巨大需求,在深度学习入门最少需要知…

  • Oracle数据库双机热备方案「建议收藏」

    http://blog.chinaunix.net/uid-25806228-id-2141469.html1.方案综述OracleFailSafe是架构在MicrosoftClusterServer(MSCS)上的一个Oracle产品,为Oracle的一些产品(数据库、OracleApplicationServer等)提供高可用性。提供

发表回复

您的电子邮箱地址不会被公开。

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