一、窗口函数是什么
既可以显示原始基础数据也可以显示聚合数据。
二、为什么需要窗口函数
SQL中有一类函数叫聚合函数(聚合函数顾名思义就是聚集合并的意思,是对某个范围内的数值进行聚合,聚合后的结果是一个值或是各个类别对应的值。),比如count、sum、avg、min、max等,这些函数的可以将多行数据按照规整聚集为一行,一般聚集前的数据行要大于聚集后的数据行。而有时候我们不仅想要聚集前的数据,又想要聚集后的数据,这时候便引入了窗口函数。如图所示。
三、怎么用窗口函数
- 用于排序的窗口函数
- 用于用户分组查询的窗口函数
- 用于偏移分析的窗口函数
四、通过几道TMD面试题来了解窗口函数
4.1
某顶尖外卖平台数据分析师面试题。现有交易数据表user_goods_table如下:
user_name 用户名
goods_kind 用户订购的的外卖品类
现在老板想知道每个用户购买的外卖品类偏好分布,并取出每个用户购买最多的外卖品类是哪个。
方法一:
select b.user_name,
b.goods_kind
from
(
select user_name,
goods_kind,
row_number() over(partition by user_name order by count(goods_kind) desc) as rank
from user_goods_table
group by user_name, goods_kind) b -- 添加分组之后可以