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

MySQL双字段GROUP BY后按用户去重统计访问次数的实现问题

实现SQL语句

你需要使用条件聚合的逻辑,同时将分组依据调整为仅按user字段分组即可,参考语句如下:

SELECT
  `user`,
  SUM(IF(`visit` = 1, 1, 0)) AS `visit1`,
  COUNT(*) AS `visit_total`
FROM t
GROUP BY `user`

逻辑说明

  • 分组规则改为GROUP BY user,保证最终结果中每个用户仅对应一行,不会出现重复的user记录
  • SUM(IF(visit = 1, 1, 0))是条件聚合的核心逻辑:遍历当前用户的所有行,当visit值为1时计数加1,否则加0,最终求和结果就是该用户visit=1的总次数
    如果你需要兼容更多SQL标准,也可以替换为SUM(CASE WHEN visit = 1 THEN 1 ELSE 0 END) AS visit1,执行效果完全一致
  • COUNT(*)统计当前用户的所有行记录,即所有visit的总计数;如果你的visit字段存在空值、不需要统计空值的话,可以替换为COUNT(visit)

注意事项

MySQL 5.7及以上默认开启ONLY_FULL_GROUP_BY模式,上述语句完全符合规范,不会触发语法错误,返回结果和你给出的示例完全匹配。

内容的提问来源于stack exchange,提问作者Александр Грешников

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:45:01