本次将学习SQL中几个高级点的函数和运算符。
1、窗口函数
窗口函数,也叫OLAP函数(Online Anallytical Processing,联机分析处理),可以对数据库数据进行实时分析处理。语法如下:
<窗口函数> OVER ([PARTITION BY <列名>] ORDER BY <排序用列名>)
常规的SELECT语句都是对整张表进行查询,而窗口函数可以让我们有选择的去某一部分数据进行汇总、计算和排序。
需要注意的是窗口函数原则上只能写在SELECT子句中;窗口函数OVER 中的ORDER BY 子句并不会影响最终结果的排序。其只是用来决定窗口函数按何种顺序计算。
PARTITON BY 是用来分组,即选择要看哪个窗口;ORDER BY 是用来排序,即决定窗口内,是按那种规则(字段)来排序的。
窗口函数可以分为两类:
(1)聚合函数:SUM、MAX、MIN;
(2)专用函数:RANK、DENSE_RANK、ROW_NUMBER;
RANK函数的用法:
计算排序时,如果存在相同位次的记录,则会跳过之后的位次。
DENSE函数用法:
也是计算排序,即使存在相同位次的记录,也不会跳过之后的位次。
ROW_NUMBER函数用法:
赋予唯一的连续位次。即排序是唯一的且位次连续。
聚合函数在窗口函数中的使用方法和之前的专用窗口函数一样&