节选 1
用一条 SQL 求次日留存率。
核心思路是自连接。以首日活跃表作为主表,左连接次日活跃表,连接条件为uid相等且次日日期等于首日日期加1天。最后用次日去重用户数除以首日去重用户数。答题要主动说明count(distinct)去重逻辑、处理跨月日期的date_add函数以及首日活跃的定义口径。
窗口函数、留存计算、行列转换,附 30 道可直接跑的练习题。
核心思路是自连接。以首日活跃表作为主表,左连接次日活跃表,连接条件为uid相等且次日日期等于首日日期加1天。最后用次日去重用户数除以首日去重用户数。答题要主动说明count(distinct)去重逻辑、处理跨月日期的date_add函数以及首日活跃的定义口径。
三者核心区别在并列数据的处理:ROW_NUMBER强制生成连续唯一序号不并列;RANK遇到并列值会赋予相同序号且后续跳号;DENSE_RANK并列但不跳号。业务中取分组Top N去重推荐ROW_NUMBER,做积分榜或奖项评定等并列排名推荐DENSE_RANK。