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

如何编写MySQL查询实现Logins列求和及去重列值计数求和

解决MySQL中两种求和需求的查询语句

1. 直接对现有Logins列求和

如果你的数据已经是按月份统计好的(就像你给出的示例结果),要计算所有月份的登录总数非常简单,直接用SUM()函数对Logins列求和即可。假设存储这些统计数据的表名为monthly_login_stats,查询语句如下:

SELECT SUM(Logins) AS total_login_count
FROM monthly_login_stats;

执行这条语句后,就会得到示例中的结果49,别名total_login_count方便你快速识别结果含义。

2. 基于去重列值计数后的求和

如果你的需求是从原始登录记录(而非已聚合的月份统计数据)出发,先按月份对用户去重(比如同一个用户当月多次登录仅算一次),统计每个月的独立登录用户数后再求和,这里提供两种实现方式:

方式一:子查询分步统计

先通过子查询按年月分组,算出每个月的独立用户数,再在外层对这些数值求和:

SELECT SUM(monthly_unique_users) AS total_unique_login_users
FROM (
    SELECT COUNT(DISTINCT user_id) AS monthly_unique_users
    FROM login_records
    GROUP BY MONTH(login_date), YEAR(login_date)
) AS monthly_unique_stats;

这里假设原始登录记录表为login_records,包含user_id(用户唯一标识)和login_date(登录日期)字段。

方式二:直接计数唯一组合

还有更简洁的写法:直接统计「用户-年月」的唯一组合总数,本质和上面的分步统计结果一致:

SELECT COUNT(DISTINCT CONCAT(YEAR(login_date), '-', MONTH(login_date), '-', user_id)) AS total_unique_login_users
FROM login_records;

通过拼接年月与用户ID生成唯一标识,去重后直接计数,省去了子查询的步骤。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:29:10