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

如何通过SQL统计多列组合各自对应的合作方数量

SQL实现方案

统计所有属性列的唯一值组合对应的合作方数量,直接按照所有需要分组的属性列做分组,再对partner_id去重计数即可,基础实现代码如下:

SELECT 
    属性列1,
    属性列2,
    属性列3, -- 替换为你实际需要统计的所有属性列,和表中实际列名对应
    COUNT(DISTINCT partner_id) AS 合作方数量
FROM 
    你的表名 -- 替换为你实际的数据表名
GROUP BY 
    属性列1,
    属性列2,
    属性列3 -- 此处列要和SELECT中的非聚合列完全一致

补充说明

  • 若你的表中同一个partner_id在同一组属性组合下只会出现一次,可以将COUNT(DISTINCT partner_id)替换为COUNT(*),查询性能会更好。
  • 若你需要返回包含合作方数量为0的全量属性组合,可使用笛卡尔集先生成所有属性组合再关联统计,实现代码如下:
WITH all_attr_combinations AS (
    SELECT t1.属性列1, t2.属性列2, t3.属性列3 -- 替换为所有需要统计的属性列
    FROM (SELECT DISTINCT 属性列1 FROM 你的表名) t1
    CROSS JOIN (SELECT DISTINCT 属性列2 FROM 你的表名) t2
    CROSS JOIN (SELECT DISTINCT 属性列3 FROM 你的表名) t3 -- 每多一个属性列就新增一行CROSS JOIN对应逻辑
)
SELECT 
    a.属性列1,
    a.属性列2,
    a.属性列3,
    COUNT(DISTINCT p.partner_id) AS 合作方数量
FROM all_attr_combinations a
LEFT JOIN 你的表名 p
    ON a.属性列1 = p.属性列1 
    AND a.属性列2 = p.属性列2
    AND a.属性列3 = p.属性列3 -- 所有属性列的关联条件要补全
GROUP BY a.属性列1, a.属性列2, a.属性列3
  • 若使用的数据库版本不支持WITH语法(如MySQL 5.x),将上述CTE部分替换为FROM后的子查询即可正常执行。

内容的提问来源于stack exchange,提问作者Alex.Six

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:15:10