课程章节:第5章 窗口函数
主讲老师:董旭阳(Tony.Dong)
课程内容:
一、窗口函数基本概念(window function)(分析函数)
二、专用窗口函数
1、用于排名:row_number(),rank(),dense_rank(),percent_rank()
2、用户获取窗口第一名或最后一名:first_value(),last_value(),
前面第几名或者后面第几名:lead(),lag()
3、累计分布,累计到现在占了多少cume_dist(),
排名第几名的函数nth_value(),
比分位ntile(),比如四分之一百分位(占百分值二十五)
三、窗口定义(完整的窗口定义)
写法:window_function(expr)
OVER(partiton by...
order by ....
frame_clause
)
课程收获:
一、窗口函数也称为分析函数,用于在sql语句中做数据分析用的,与聚合函数类似但是每一行数据都生成一个结果。
关键部分:聚合函数OVER (partition by) as 别名
用法:Select 列1,列2,列3, avg(列3) OVER(partition by 列2) as 别名 from 表;
如:Select year,country,product,profit,sum(profit) OVER (partition by country) as contry_profit
From sales order by country,year,product,profit;
OVER不区分大小写, OVER与后面的括号直接要有空格
二、关于完整的窗口定义,用一个例子可以帮助更好的理解
Select year,country,product,profit,sum(profit) OVER (partition by country order by profit rows unbounded preceding ) as running_total
From sales order by country,profit;
计算一个利润的总和,首先按照国家进行分区,然后按照利润进行排序,排序完成之后,对于每一行计算,从最开始那一行到当前行结束(后面不写就默认到当前行结束).