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

如何对不同日期的重复MemberID去重并统计登录满5天的活跃会员数

嘿,这个需求其实很好解决,核心就是要按会员ID去重统计他们的登录天数,再筛选出满足条件的会员总数就行。我给你两种最常用的实现方案,不管你用SQL还是Python都能搞定:

方案1:用SQL实现

假设你的登录记录表名叫member_login,字段对应MemberID, Year, Month, Day。

核心思路是先按会员ID分组,对每个会员的登录日期去重计数,再筛选出天数≥5的会员,最后统计总数:

-- 直接一步统计活跃会员总数
SELECT COUNT(*) AS active_member_total
FROM (
    -- 子查询:统计每个会员的不同登录天数
    SELECT MemberID
    FROM member_login
    GROUP BY MemberID
    -- 用CONCAT把年月日拼接成唯一日期标识,去重后计数
    HAVING COUNT(DISTINCT CONCAT(Year, '-', Month, '-', Day)) >= 5
) AS active_members;

针对你的示例数据,执行这段SQL会返回2,完全符合预期结果。

方案2:用Python(Pandas)实现

如果你的数据是在本地处理,用Pandas会很方便。假设数据已经读取到DataFrame中:

import pandas as pd

# 模拟你的示例数据
sample_data = [
    ('1337', '2020', '09', '01'),
    ('1338', '2020', '09', '01'),
    ('1339', '2020', '09', '01'),
    ('1340', '2020', '09', '01'),
    ('1341', '2020', '09', '01'),
    ('1337', '2020', '09', '02'),
    ('1338', '2020', '09', '02'),
    ('1339', '2020', '09', '02'),
    ('1340', '2020', '09', '02'),
    ('1341', '2020', '09', '02'),
    ('1337', '2020', '09', '03'),
    ('1338', '2020', '09', '03'),
    ('1339', '2020', '09', '03'),
    ('1340', '2020', '09', '03'),
    ('1341', '2020', '09', '03'),
    ('1337', '2020', '09', '04'),
    ('1338', '2020', '09', '04'),
    ('1339', '2020', '09', '04'),
    ('1340', '2020', '09', '04'),
    ('1341', '2020', '09', '04'),
    ('1337', '2020', '09', '05'),
    ('1338', '2020', '09', '05')
]

# 转换成DataFrame
df = pd.DataFrame(sample_data, columns=['MemberID', 'Year', 'Month', 'Day'])

# 1. 把年月日拼接成标准日期格式
df['login_date'] = pd.to_datetime(df[['Year', 'Month', 'Day']])

# 2. 按会员ID分组,统计不同登录日期的数量
login_day_count = df.groupby('MemberID')['login_date'].nunique()

# 3. 筛选出登录天数≥5的会员,统计总数
active_member_total = len(login_day_count[login_day_count >= 5])

print(active_member_total)  # 输出:2

运行这段代码后,同样会得到正确的结果2。

简单总结下:不管用哪种工具,核心逻辑都是先按会员ID分组,对组内的登录日期去重计数,最后筛选出计数≥5的会员并统计数量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 11:47:43