You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按等级计算用户流失率(不使用窗口函数)

不使用窗口函数计算各等级用户流失数

原始查询及结果

你当前统计各等级用户数的SQL语句如下:

SELECT
    level,
    COUNT(id) AS count_id
FROM
    dev
GROUP BY level
ORDER BY level ASC;

查询输出结果:

levelcount_id
14723602
24239623
34195459
43781344
53303071
62824263
73627376
82746447
93409989

需求说明

需要计算每个等级的用户流失数,逻辑为上一等级的用户数减去当前等级的用户数,且不能使用窗口函数。

解决方案:自连接实现

通过将统计用户数的子查询自连接,关联当前等级与上一等级的数据,即可计算流失数:

SELECT
    curr.level,
    -- 等级1无上级,流失数设为0;其余等级用上一级用户数减当前用户数
    CASE 
        WHEN prev.count_id IS NULL THEN 0 
        ELSE prev.count_id - curr.count_id 
    END AS churn
FROM
    (SELECT level, COUNT(id) AS count_id FROM dev GROUP BY level) curr
LEFT JOIN
    (SELECT level, COUNT(id) AS count_id FROM dev GROUP BY level) prev
ON curr.level = prev.level + 1
ORDER BY curr.level ASC;

结果说明

执行后会得到如下结果(若当前等级用户数多于上一级,结果会为负数,可根据业务需求用GREATEST(prev.count_id - curr.count_id, 0)替换计算逻辑,将负数值转为0):

levelchurn
10
2483979
344164
4414115
5478273
6478808
7-803113
8880929
9-663542

内容的提问来源于stack exchange,提问作者alikkaaa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 03:07:48