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

如何通过内连接按日统计存在user_data的用户注册数量?

问题分析与解决方案

你的问题出在分组逻辑上:原SQL将email和users.created_at一起作为分组依据,这会把每个用户(对应唯一email)和其精确到时分秒的注册时间单独分成一组,自然无法得到按日期聚合的每日注册量。

要实现按日期统计每日符合条件的用户数,需要做以下调整:

  • 将created_at转换为纯日期格式(避免因时分秒差异导致同一天的记录被拆分)
  • 仅按日期字段分组,移除email分组
  • 只保留日期和统计计数,不需要单独返回email(聚合后单个用户的email无意义)

修正后的SQL示例:

-- MySQL 版本
SELECT DATE(users.created_at) AS register_date, COUNT(DISTINCT users.id) AS daily_reg_count
FROM users 
INNER JOIN user_data ON users.id = user_data.user_id
GROUP BY register_date
ORDER BY register_date;
-- PostgreSQL 版本
SELECT DATE(users.created_at) AS register_date, COUNT(DISTINCT users.id) AS daily_reg_count
FROM users 
INNER JOIN user_data ON users.id = user_data.user_id
GROUP BY register_date
ORDER BY register_date;
-- SQL Server 版本
SELECT CAST(users.created_at AS DATE) AS register_date, COUNT(DISTINCT users.id) AS daily_reg_count
FROM users 
INNER JOIN user_data ON users.id = user_data.user_id
GROUP BY CAST(users.created_at AS DATE)
ORDER BY register_date;

关键说明:

  • 使用DATE()或CAST(... AS DATE)将带时间的created_at转为纯日期,确保同一天的所有记录归为一组
  • 用COUNT(DISTINCT users.id)避免同一用户因关联多条user_data记录被重复统计(如果一个用户对应多条user_data,COUNT(*)会多算,COUNT(DISTINCT)能保证每个用户只计一次)
  • 按register_date排序,方便直观查看注册增长趋势

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 23:42:07