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

Redshift SQL查询:统计各市场数量桶内的组织数量需求咨询

Redshift SQL 实现组织覆盖市场数量的分组统计

完整查询语句

WITH org_market_count AS (
    -- 计算每个组织覆盖的唯一市场数量
    SELECT 
        organization_id,
        COUNT(DISTINCT market_name) AS market_count
    FROM organization_facts
    -- 若需筛选企业账户,取消下方注释
    -- WHERE enterprise_account = true
    GROUP BY organization_id
),
market_buckets AS (
    -- 生成1到50的市场数量桶序列
    SELECT generate_series(1, 50) AS bucket
)
-- 关联统计结果,补全所有桶的组织数量(含0值)
SELECT 
    CONCAT(b.bucket, '个市场') AS "市场数量桶",
    COALESCE(COUNT(o.organization_id), 0) AS "组织数量"
FROM market_buckets b
LEFT JOIN org_market_count o ON b.bucket = o.market_count
GROUP BY b.bucket
ORDER BY b.bucket;

代码解释

  1. org_market_count CTE

    • 按organization_id分组,通过COUNT(DISTINCT market_name)计算每个组织实际覆盖的唯一市场数,避免同组织同市场的重复记录干扰统计。
    • 如需仅统计企业账户,取消WHERE子句的注释即可。
  2. market_buckets CTE

    • 利用Redshift的generate_series函数生成1到50的连续数字,确保所有需要统计的市场数量桶都被包含,即使某桶没有对应组织也能显示0值。
  3. 最终查询

    • 通过左连接保留所有市场数量桶,用COALESCE将NULL转换为0,明确表示该桶下无对应组织。
    • 用CONCAT将数字格式化为“X个市场”的文本,匹配你期望的输出格式。

示例数据验证

基于你提供的示例数据,执行查询后会得到如下核心结果:

市场数量桶组织数量
1个市场3
2个市场1
3个市场0
......
50个市场0

其中:

  • Company x(ID15683)覆盖纽约、双子城2个市场
  • Company y、Company z、Company xy各覆盖1个市场
    完全符合你期望的统计逻辑。

原SQL问题说明

你原有的SQL仅尝试处理“1个市场”的单一场景,未实现通用分组统计,也未处理同组织多市场记录的去重问题,更无法覆盖1-50所有市场数量桶的展示需求。上述查询完整解决了这些问题,适配超10000家公司的批量统计场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 01:45:37