使用MySQL计算平均活跃时长≥30与<30的用户占比
MySQL统计用户活跃时长占比
需求说明
从包含Id和AverageActiveMinutes字段的用户表中,统计AverageActiveMinutes≥30的用户占比,以及AverageActiveMinutes<30的用户占比,结果以单行两列形式输出,保留一位小数。
实现SQL语句
假设用户表名为user_stats,执行以下SQL:
SELECT ROUND(100 * SUM(CASE WHEN AverageActiveMinutes >= 30 THEN 1 ELSE 0 END) / COUNT(*), 1) AS PercentOver30, ROUND(100 * SUM(CASE WHEN AverageActiveMinutes < 30 THEN 1 ELSE 0 END) / COUNT(*), 1) AS PercentUnder30 FROM user_stats;
代码解释
SUM(CASE WHEN ... THEN 1 ELSE 0 END):分别统计符合两类条件的用户数量COUNT(*):获取总用户数100 * ... / COUNT(*):将占比转换为百分比形式ROUND(..., 1):将结果保留一位小数,匹配期望输出格式
示例结果
执行上述SQL后,会得到如下格式的结果:
| PercentOver30 | PercentUnder30 |
|---|---|
| 42.9 | 57.1 |
内容的提问来源于stack exchange,提问作者Chase
相关产品推荐
相关产品推荐

