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

无SQL经验如何统计志愿者及团队日均联络人数并做跨区域数据对比

我们默认你的联络记录表名为volunteer_contacts,如果实际表名不同,替换语句中的表名即可。涉及的字段对应你提到的:volunteer(志愿者唯一编号)、contacts(联络发生的时间戳)、contact_id(联络记录主键,唯一标识每条联络)

如果你的需求是统计日均联络的不同人数,需要确认表中是否有被联络人的唯一标识字段,将COUNT(contact_id)替换为COUNT(DISTINCT 被联络人字段名)即可,下述语句逻辑保持不变

1. 每位志愿者的日均联络数据统计

计算逻辑:先统计每个志愿者每天的联络总次数,再除以该志愿者有产生联络的天数(如果需要按整个统计周期的总天数计算,可调整分母逻辑)

SELECT
  volunteer AS 志愿者编号,
  -- 总联络次数 / 有联络的天数 = 日均联络次数
  COUNT(contact_id) / COUNT(DISTINCT DATE(contacts)) AS 个人日均联络次数,
  COUNT(contact_id) AS 统计周期内总联络次数,
  COUNT(DISTINCT DATE(contacts)) AS 有联络的天数
FROM volunteer_contacts
-- 如果需要指定统计时间范围,打开下面的注释填入时间即可
-- WHERE contacts >= '2024-01-01' AND contacts < '2024-07-01'
GROUP BY volunteer;

你只需要替换为实际表名,需要限定统计时间的话把WHERE语句的注释打开,改成你要的时间范围即可,执行后就能得到每个志愿者的日均数据。

2. 整个团队的日均联络数据统计

计算逻辑:统计全团队在统计周期内的总联络次数,除以统计周期内至少有1次联络产生的天数

SELECT
  COUNT(contact_id) / COUNT(DISTINCT DATE(contacts)) AS 团队整体日均联络次数,
  COUNT(contact_id) AS 统计周期内团队总联络次数,
  COUNT(DISTINCT DATE(contacts)) AS 统计周期内有产生联络的总天数
FROM volunteer_contacts
-- 同上面的时间范围筛选逻辑,需要时打开注释即可
-- WHERE contacts >= '2024-01-01' AND contacts < '2024-07-01';

执行后直接得到整个团队的平均数值,时间筛选规则同上。

3. 方便后续和其他数据JOIN的预计算视图

如果后续需要频繁用这些均值和区域经理等其他数据关联,可以直接创建视图,后续JOIN时直接调用视图即可,不用重复写统计逻辑:

-- 创建志愿者个人日均数据视图
CREATE VIEW volunteer_daily_avg AS
SELECT
  volunteer,
  COUNT(contact_id) / COUNT(DISTINCT DATE(contacts)) AS volunteer_avg_contacts
FROM volunteer_contacts
GROUP BY volunteer;

-- 后续和其他表JOIN示例,假设区域经理数据表名为area_manager_data,关联字段为volunteer
SELECT *
FROM area_manager_data a
LEFT JOIN volunteer_daily_avg v
ON a.volunteer = v.volunteer;

视图创建一次就可以长期使用,后续关联其他数据的时候直接调用视图名即可,不用再重复写统计逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:18:05