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

SQL实现按用户维度统计去重后的事件数量

统计需求说明

现有业务数据表包含字段:

ID | event | user | time | note | archived

需统计每名用户参与的事件总数量,统计规则为同一用户对应同一事件的多条记录仅计数1次,不做重复累计,最终输出字段结构为:

user | nrofevents
实现方案

使用COUNT(DISTINCT)聚合函数搭配分组查询即可实现,该写法兼容绝大多数主流关系型数据库,参考SQL如下:

SELECT
  `user`,
  COUNT(DISTINCT event) AS nrofevents
FROM 替换为实际业务表名
-- 若需过滤无效记录可在此添加WHERE条件,例:WHERE archived = 0
GROUP BY `user`;

补充说明

  • user属于多数SQL方言的保留关键字,查询时建议用反引号包裹转义,避免触发语法错误
  • 若需限定统计范围(如指定时间区间、排除已归档记录),直接在GROUP BY子句前添加对应WHERE过滤条件即可
  • 若使用极个别不支持COUNT(DISTINCT)语法的老旧数据库版本,可先通过子查询对user和event去重后再分组计数,参考写法:
SELECT
  `user`,
  COUNT(event) AS nrofevents
FROM (
  SELECT DISTINCT `user`, event
  FROM 替换为实际业务表名
  -- 此处同样可添加WHERE过滤条件
) t
GROUP BY `user`;

内容的提问来源于stack exchange,提问作者Ondřej Douša

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 04:15:14