人口矩阵组合 SQL teradata

population matrix combinations SQL teradata

我有这个数据集,基本上customer_id,Brand, Indicator of 1 yes, 0 no(他们是否在那个品牌)。好吧,数据集当然是组成的......但它是这种 3 列格式......

customer_id, brand, yes/no (1 yes, 0 no)
123, Sony, 1
123, Pepsi, 1
123, BMC, 1
123, Samsung, 1

122, Sony, 1
122, BMC, 1

125, Sony, 1
125, Pepsi, 1

基本上,我需要计算每个客户组的所有品牌,找到所有可能的组合并在矩阵中报告它,如果你想到一个相关矩阵,你会在其中看到所有这些可能的组合, 但根据人口统计,这就是我基本上要寻找的。

        SONY, PEPSI, BMC, SAMSUNG
SONY      3     2     2     1
PEPSI     2     2     2     1    
BMC       2     2     2     1
SAMSUNG   1     1     1     1

所以我需要在品牌组级别生成这些交叉点的​​某种矩阵,但比较和计算这些组中的客户,我希望这是有意义的。我查看了一些组合 SQL,这似乎让我很接近,但没有正确计算客户数量,所以我有点难过。我在 Teradata 16 上,但任何 ANSI SQL 都能完成此任务,只要它有效...谢谢!

顺便说一句,我想通了......它不是矩阵格式,但确实给了我所有的排列,比较客户在每个品牌上花费超过 25 美元的时间,以及所有可能的组合:

SELECT 
    count(customer_id) AS Counts,
    BRAND1,
    BRAND2,
    BRAND3,
    BRAND4,
    BRAND5,
    
    FROM 
    (
    SELECT 
         customer_id, 
        ,CASE WHEN BRAND1 > 25 THEN 1 END AS BRAND1
        ,CASE WHEN BRAND2 > 25 THEN 1 END AS BRAND2
        ,CASE WHEN BRAND3 > 25 THEN 1 END AS BRAND3
        ,CASE WHEN BRAND4 > 25 THEN 1 END AS BRAND4
        ,CASE WHEN BRAND5 > 25 THEN 1 END AS BRAND5
    
    FROM Table
    ) AS A

group by 2,3,4,5,6
order by 1 desc,2,3,4,5,6