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

使用MySQL统计用户活跃度:查询月度Top10高活动量用户

没问题,我来帮你解决这个统计需求!咱们分两步来:先搞定MySQL的统计查询,再用PHP处理数据准备生成图表。

第一步:MySQL查询实现月度活动总量统计 & Top10筛选

首先,你的核心需求是按用户+月份聚合,统计每个用户每月的活动总量,再取Top10用户。这里需要注意你的date字段是字符串格式(比如17/03/18),得先转成MySQL可识别的日期类型,再提取年月维度。

给你写好的查询语句:

SELECT 
    user_id,
    DATE_FORMAT(STR_TO_DATE(`date`, '%d/%m/%y'), '%Y-%m') AS month,
    SUM(quantity) AS total_quantity
FROM 
    your_table_name
GROUP BY 
    user_id, month
ORDER BY 
    total_quantity DESC
LIMIT 10;

语句解释:

  • STR_TO_DATE(date, '%d/%m/%y'):把你的字符串日期转成MySQL日期格式,%d/%m/%y对应日/月/两位年的格式
  • DATE_FORMAT(..., '%Y-%m'):提取出年-月的格式(比如2017-03),作为分组的时间维度
  • SUM(quantity):把同一个用户同一个月的所有quantity加总,得到月度活动总量
  • GROUP BY user_id, month:按用户和月份分组,确保每个用户每个月只有一条统计结果
  • ORDER BY total_quantity DESC LIMIT 10:按总量从高到低排序,取前10的用户统计数据

如果你的date字段已经是MySQL的日期类型(比如DATE或DATETIME),可以简化成:

SELECT 
    user_id,
    DATE_FORMAT(`date`, '%Y-%m') AS month,
    SUM(quantity) AS total_quantity
FROM 
    your_table_name
GROUP BY 
    user_id, month
ORDER BY 
    total_quantity DESC
LIMIT 10;
第二步:PHP处理查询结果 & 准备图表数据

拿到MySQL的统计结果后,你可以用PHP把数据整理成适合图表库(比如Chart.js、ECharts)使用的格式。这里用PDO举个例子:

<?php
// 数据库连接配置
$host = 'your_host';
$dbname = 'your_db';
$username = 'your_user';
$password = 'your_pass';

try {
    // 建立PDO连接
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 执行查询
    $sql = "SELECT user_id, DATE_FORMAT(STR_TO_DATE(`date`, '%d/%m/%y'), '%Y-%m') AS month, SUM(quantity) AS total_quantity FROM your_table_name GROUP BY user_id, month ORDER BY total_quantity DESC LIMIT 10";
    $stmt = $pdo->prepare($sql);
    $stmt->execute();

    // 获取所有结果
    $stats = $stmt->fetchAll(PDO::FETCH_ASSOC);

    // 整理成图表需要的格式(比如分用户列表和对应的数据列表)
    $userLabels = [];
    $monthlyData = [];
    foreach ($stats as $item) {
        $userLabels[] = $item['user_id'];
        $monthlyData[] = [
            'month' => $item['month'],
            'total' => $item['total_quantity']
        ];
    }

    // 如果要给前端图表用,可以转成JSON
    echo json_encode([
        'users' => $userLabels,
        'data' => $monthlyData
    ]);

} catch(PDOException $e) {
    echo "数据库错误: " . $e->getMessage();
}
?>

说明:

  • 这段代码会把Top10用户的月度统计数据提取出来,整理成可以直接给前端图表使用的结构
  • 如果你的图表需要按月份展示每个用户的趋势,也可以调整数据整理的逻辑,比如按月份分组,把每个用户的总量作为系列数据

这样你就能拿到需要的统计数据,后续对接图表库生成可视化图表就很轻松啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:53:01