如何使用mysql统计用户数据_mysql数据统计实战案例

P粉602998670
发布: 2025-12-19 15:55:14
原创
981人浏览过
MySQL用户数据分析核心是GROUP BY与聚合函数结合时间函数;按注册时间统计日/月新增用户需归一化时间字段;DAU/MAU用COUNT(DISTINCT)计算活跃用户;次日留存通过LEFT JOIN限定行为时间间隔实现。

如何使用mysql统计用户数据_mysql数据统计实战案例

统计用户数据是 MySQL 最常见的分析场景之一,核心在于用好 GROUP BY聚合函数(如 COUNT、SUM、AVG)和时间函数(如 DATE、YEAR、DATE_SUB),再结合业务逻辑做条件筛选与分组维度设计。

按注册时间统计每日/每月新增用户数

这是最基础也最有价值的指标。关键是要把注册时间字段(比如 created_at)按天或月归一化,再计数。

  • 统计每天新增用户:SELECT DATE(created_at) AS day, COUNT(*) AS new_users FROM users GROUP BY DATE(created_at) ORDER BY day;
  • 统计每月新增用户:SELECT DATE_FORMAT(created_at, '%Y-%m') AS month, COUNT(*) AS new_users FROM users GROUP BY month ORDER BY month;
  • 若只查最近30天,可在 WHERE 中加条件:WHERE created_at >= DATE_SUB(NOW(), INTERVAL 30 DAY)

统计活跃用户(DAU / MAU)

活跃用户通常指当天有登录、下单或页面访问行为的用户。假设有 user_behavior 表记录用户行为,含 user_id 和 behavior_time 字段。

DESTOON B2B网站管理系统
DESTOON B2B网站管理系统

DESTOON B2B网站管理系统是一套完善的B2B(电子商务)行业门户解决方案。系统基于PHP+MySQL开发,采用B/S架构,模板与程序分离,源码开放。模型化的开发思路,可扩展或删除任何功能;创新的缓存技术与数据库设计,可负载千万级别数据容量及访问。

DESTOON B2B网站管理系统 0
查看详情 DESTOON B2B网站管理系统
  • 计算某日 DAU(日活跃用户数):SELECT COUNT(DISTINCT user_id) AS dau FROM user_behavior WHERE DATE(behavior_time) = '2024-06-15';
  • 计算某月 MAU(月活跃用户数):SELECT COUNT(DISTINCT user_id) AS mau FROM user_behavior WHERE behavior_time >= '2024-06-01' AND behavior_time
  • 注意:用 COUNT(DISTINCT user_id) 避免重复计数,比单纯 GROUP BY 更准确

分城市/渠道/会员等级统计用户分布

这类统计用于用户画像和运营决策,重点在多维度分组与空值处理。

  • 按城市统计用户数(忽略空城市):SELECT city, COUNT(*) AS user_count FROM users WHERE city IS NOT NULL AND city != '' GROUP BY city ORDER BY user_count DESC LIMIT 10;
  • 按注册渠道和会员等级交叉统计:SELECT source, level, COUNT(*) AS cnt FROM users GROUP BY source, level;
  • 建议对 source、level 等字段建联合索引,提升 GROUP BY 效率

留存率计算(次日/7日留存)

留存反映用户粘性。需用自连接或窗口函数(MySQL 8.0+ 支持),这里给出兼容 5.7 的子查询写法。

  • 计算次日留存率(注册后第2天仍活跃):SELECT t1.reg_day, COUNT(t2.user_id) / COUNT(t1.user_id) AS retention_rate FROM (SELECT DATE(created_at) AS reg_day, user_id FROM users WHERE created_at >= '2024-06-01') t1 LEFT JOIN (SELECT DATE(behavior_time) AS act_day, user_id FROM user_behavior) t2 ON t1.user_id = t2.user_id AND t2.act_day = DATE_ADD(t1.reg_day, INTERVAL 1 DAY) GROUP BY t1.reg_day;
  • 关键点:主表是注册用户,LEFT JOIN 活跃行为表并限定“次日”,再用 COUNT 计算比例
  • 7日留存只需把 INTERVAL 1 DAY 改成 INTERVAL 7 DAY,并确保行为表有足够历史数据

以上就是如何使用mysql统计用户数据_mysql数据统计实战案例的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号