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

CountDistinct统计每日唯一资源后求和及计算周期均值的方法咨询

解决方案

标准SQL实现

核心逻辑是先按日期维度分组计算每日唯一资源数,再对结果集做二次聚合,避免直接聚合产生全局去重的问题。
示例代码如下(适配MySQL、PostgreSQL、Spark SQL等绝大多数SQL引擎):

-- 计算指定时间段内每日唯一资源数的总和
SELECT SUM(daily_distinct_cnt) AS total_daily_resource_cnt
FROM (
    -- 内层子查询:按天统计当日使用的唯一资源数
    SELECT
        DATE(stat_date) AS stat_date, -- 若日期带时分秒需先截断到天
        COUNT(DISTINCT resource_id) AS daily_distinct_cnt
    FROM 你的表名
    WHERE stat_date BETWEEN '202X-XX-XX' AND '202X-XX-XX' -- 替换为实际时间范围
    GROUP BY DATE(stat_date)
) daily_stat;

-- 若需计算日均唯一资源数,将外层SUM替换为AVG即可
SELECT AVG(daily_distinct_cnt) AS avg_daily_resource_cnt
FROM (
    SELECT
        DATE(stat_date) AS stat_date,
        COUNT(DISTINCT resource_id) AS daily_distinct_cnt
    FROM 你的表名
    WHERE stat_date BETWEEN '202X-XX-XX' AND '202X-XX-XX'
    GROUP BY DATE(stat_date)
) daily_stat;

对应你给出的两日示例,内层子查询会先返回每日统计结果:第1天1个、第2天2个,外层求和后得到3,和预期结果完全匹配。

BI工具实现(适用于Tableau、Power BI等可视化分析场景)

如果是通过BI工具做分析无需手写SQL,可以用详细级别表达式实现:

  • Tableau:创建计算字段,使用FIXED级别的LOD表达式:{FIXED [统计日期]: COUNTD([资源ID])},将该字段拖入视图后选择聚合方式为「求和」即可
  • Power BI:创建度量值,使用SUMX迭代函数实现:
每日去重资源总和 = 
SUMX(
    VALUES('业务表'[统计日期]),
    CALCULATE(DISTINCTCOUNT('业务表'[资源ID]))
)

你描述的82+92+100+90+91+92的每日结果求和场景,用上述两种方案均可直接实现。

统计示例1
统计示例2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 06:48:00