大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新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函数 : 用于计算记录排序的函数
需求: 根据不同的商品种类(product_type),按照销售单价(sale_price) 从低到高的顺序排序 ?
总结 :PARTITION BY 横向对表进行分组、ORDER BY 决定纵向排序的规则。通过 PARTITION BY 分组后的集合称为窗口。
2.1 不使用 PARTITION BY 情况下:
换一个排序的开窗函数也是排序的试试:DENSE_RANK 函数
再换一个排序的开窗函数也是排序的试试:ROW_NUMBER 函数
总结 : DENSE_RANK 、RANK、ROW_NUMBER 都是排序的。DENSE_RANK 在处理并列值的时候,并列值不占位。ROW_NUMBER 是排序是连续的,不管值是否相同
3. 聚合函数作为窗口函数使用
聚合函数作为窗口函数应用的场景一般为累计统计的时候
注意 在 sqlserver 2012以前不支持聚合函数开窗求和
看例子:
-
SELECT
-
product_id,
-
product_name,
-
sale_price,
-
avg ( sale_price )
OVER (
ORDER
BY product_id )
AS current_sum
-
FROM
-
Product;
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/185925.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...