人口矩阵组合 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
我有这个数据集,基本上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