『SQL』常考面试题(2——窗口函数)

一、窗口函数是什么
既可以显示原始基础数据也可以显示聚合数据。
二、为什么需要窗口函数
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  -- 添加分组之后可以
  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值