SQL:窗口函数

本文详细介绍了SQL中的窗口函数,包括RANK、DENSE_RANK、ROW_NUMBER等专用窗口函数,以及它们在窗口函数的语法、适用范围、计算移动平均等方面的应用。窗口函数能够进行实时分析处理,提供排序、分组等功能,且只能在SELECT子句中使用。
摘要由CSDN通过智能技术生成

一、窗口函数

窗口函数,即OLAP函数,用于对数据库数据进行实时分析处理。

窗口函数分类:
1.能够作为窗口函数的聚合函数(SUM、AVG、COUNT、MAX、MIN)
2.RANK、DENSE_RANK、ROW_NUMBER 等专用窗口函数

窗口函数的语法

-- []中的内容可以省略
<窗口函数> OVER ([PARTITION BY <列清单>] ORDER BY <排序用列清单>)

PARTITION BY,设定排序的对象范围,在横向上对表进行分组。
ORDER BY,指定按哪一列、何种顺序进行排序,决定纵向排序的规则。
窗口函数中的ORDER BY与SELECT语句末尾的ORDER BY一样,可以通过关键字ASC/DESC来指定升序和降序。省略该关键字时会默认升序排序。

窗口,即范围,是通过PARTITION BY分组后的记录集合。

RANK函数

RANK,用来计算记录排序的函数。

-- 根据不同的商品种类,按照销售单价从低到高的顺序创建排序表
SELECT product_name, product_type, sale_price, 
		RANK () OVER (PARTITION BY product_type ORDER BY sale_price) AS ranking 
FROM Product;


从结果来看,PARTITION BY子句不具备GROUP BY子句的汇总功能。因此,使用RANK函数不会减少原表中记录的行数。

PARTITION BY不是必需的

不指定PARTITION BY,和使用没有GROUP BY的聚合函数时的效果一样。


                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值