大家好,我是阳仔。
SQL是数据分析师的必备技能,无论大厂还是小厂,在技术面试轮经常会考到开窗函数。
在这里我就结合面试和工作经验,聊聊开窗函数都有哪些应用场景。
入门 - 排名、占比问题
涉及知识点:排序窗口函数、聚合窗口函数
举个例子:
现有客户消费统计表 user_agreement_table,字段 user_id 用户id、product 产品名称、gmv 交易额
问题1:找出每个用户消费金额最大的产品
思路:用row_number( ) over( )求每个用户产品购买数量排序,然后取出第一行
SELECT
T1.user_id
, T1.product
FROM
(SELECT user_id
, product
, row_number() over(partition by user_id order by gmv desc) as rank
FROM user_agreement_table
) as T1
WHERE T1.rank = 1
问题2:每个用户在各个产品消费金额的占比分布
思路:用sum( ) over( )求每个用户消费总金额,然后计算每个产品消费金额占比(这个问题还可以用子查询解决)
SELECT
user_id
, product
, sum(gmv) over(partiti