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

MySQL:获取每日新增未出现过的唯一邮箱数量

解决每日新增唯一邮箱统计问题

嘿,我明白你的需求了——你现在的SQL只是统计了每天出现的去重邮箱数,但没有排除那些之前已经出现过的邮箱,所以结果和预期不符。我们需要的是首次在当日出现的邮箱数量,也就是真正的“每日新增”。

这里有两种简单有效的解决方案:

方法一:使用窗口函数标记首次出现日期

通过窗口函数MIN() OVER (PARTITION BY email)给每个邮箱打上它首次出现的日期标签,然后筛选出当日等于首次日期的记录,再分组统计:

SELECT 
    COUNT(DISTINCT email) AS count,
    created_at
FROM (
    SELECT 
        email,
        created_at,
        -- 标记每个邮箱的首次出现日期
        MIN(created_at) OVER (PARTITION BY email) AS first_appear_date
    FROM test_table
) t
-- 只保留当日就是首次出现的记录
WHERE created_at = first_appear_date
GROUP BY created_at
ORDER BY created_at;

方法二:先获取每个邮箱的首次出现日期再统计

先按邮箱分组,找出每个邮箱最早出现的日期,再按这个日期分组计数,逻辑更直观:

SELECT 
    COUNT(email) AS count,
    first_appear_date AS created_at
FROM (
    -- 先拿到每个邮箱的首次出现日期
    SELECT 
        email,
        MIN(created_at) AS first_appear_date
    FROM test_table
    GROUP BY email
) t
GROUP BY first_appear_date
ORDER BY first_appear_date;

验证结果

根据你的测试数据:

  • test1、test2、test3首次出现在2018-01-01 → 当日计数3
  • test4首次出现在2018-01-02 → 当日计数1
  • test5首次出现在2018-01-03 → 当日计数1

这两个查询都会返回你期望的结果:

countcreated_at
32018-01-01
12018-01-02
12018-01-03

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:36:13