如何跟踪每日新增后累计唯一Leads的增长情况?
解决方案:每日累计唯一Leads增长统计
我来帮你搞定这个每日累计唯一Leads统计的需求~ 下面分数据库SQL和Python Pandas两种常用场景给出具体实现方案:
一、数据库SQL实现(以PostgreSQL为例)
假设你的Leads数据存在名为leads的表中,包含lead_id(Leads唯一标识)和call_date(呼叫日期)两个核心字段。
核心思路
- 先定位每个Leads首次出现的日期,筛选出当日新增的唯一Leads(也就是首次出现在当天的Leads)
- 生成完整的日期范围,避免漏掉那些没有新增Leads的日期
- 对每日新增数做累计求和,得到当日结束时的累计唯一Leads总数
具体SQL代码
WITH daily_unique_new AS ( -- 统计每日新增的唯一Leads(仅包含首次出现的Leads) SELECT call_date, COUNT(DISTINCT lead_id) AS new_unique_leads FROM ( -- 标记每个Leads第一次出现的日期 SELECT lead_id, call_date, MIN(call_date) OVER (PARTITION BY lead_id) AS first_appear_date FROM leads ) t WHERE call_date = first_appear_date GROUP BY call_date ), date_series AS ( -- 生成从最早到最晚call_date的完整日期序列 SELECT generate_series( (SELECT MIN(call_date) FROM leads), (SELECT MAX(call_date) FROM leads), INTERVAL '1 day' )::date AS call_date ) -- 计算每日累计唯一Leads总数 SELECT ds.call_date, SUM(dun.new_unique_leads) OVER (ORDER BY ds.call_date) AS leadsGrowth FROM date_series ds LEFT JOIN daily_unique_new dun ON ds.call_date = dun.call_date ORDER BY ds.call_date;
二、Python Pandas实现
如果你的数据是本地文件(比如CSV)或者内存中的数据集,用Pandas处理会更灵活:
核心思路
- 统一日期格式,确保后续统计准确
- 找出每个Leads首次出现的日期,标记哪些是当日新增的唯一Leads
- 统计每日新增的唯一Leads数量
- 生成完整日期序列,填充无新增日期的0值后做累计求和
具体Python代码
import pandas as pd # 1. 加载并预处理数据(假设数据来自CSV文件) df = pd.read_csv('leads_data.csv') df['call_date'] = pd.to_datetime(df['call_date']).dt.date # 转换为标准日期格式 # 2. 获取每个Leads首次出现的日期 first_appear = df.groupby('lead_id')['call_date'].min().reset_index() first_appear.columns = ['lead_id', 'first_date'] # 3. 标记当前记录是否为该Leads的首次出现 df = df.merge(first_appear, on='lead_id') df['is_new'] = df['call_date'] == df['first_date'] # 4. 统计每日新增的唯一Leads数 daily_new = df[df['is_new']].groupby('call_date')['lead_id'].nunique().reset_index() daily_new.columns = ['call_date', 'new_unique_leads'] # 5. 生成完整日期范围,避免遗漏无新增的日期 date_range = pd.date_range(start=df['call_date'].min(), end=df['call_date'].max()).date date_df = pd.DataFrame({'call_date': date_range}) # 6. 计算累计唯一Leads总数并输出 result = date_df.merge(daily_new, on='call_date', how='left').fillna(0) result['leadsGrowth'] = result['new_unique_leads'].cumsum().astype(int) # 打印结果表格 print(result[['call_date', 'leadsGrowth']])
预期输出示例
最终会得到如下格式的结果表格:
| callDate | leadsGrowth |
|---|---|
| 2020-04-01 | 2 |
| 2020-04-02 | 4 |
| 2020-04-03 | 4 |
| ... | ... |
| 2020-04-27 | 15 |
内容的提问来源于stack exchange,提问作者Tito Lulu
相关产品推荐
相关产品推荐

