我试图在每个品牌中找到独特的客户,并试图找到购买了两个品牌的客户。我在下面有一个示例数据库:
https://dbfiddle.uk/?rdbms=oracle_11.2&fiddle=3e70be96c05bac789ed3c82b3cae6abb
我的输出应该是:
答案 0 :(得分:1)
第一 获取个人的所有品牌。
在较旧的数据库中,我使用了wmsys.wm_concat
,但似乎已过时,取而代之的是listagg
这是在您的dbfiddle中工作的查询。您可以添加到其中以获取所需的其余列。
select individual_id,
rtrim( regexp_replace((listagg(brand_org_code , '-')
WITHIN GROUP (ORDER BY brand_org_code)),
'([^-]*)(-\1)+($|-)',
'\1\3'),
'-') as brands,
sum(dollar_value_us) dollar_sum
from transaction_detail_mv
group by individual_id
第二 用作子查询。
select brands, sum(dollar_sum)
from (select individual_id,
rtrim( regexp_replace((listagg(brand_org_code , '-')
WITHIN GROUP (ORDER BY brand_org_code)),
'([^-]*)(-\1)+($|-)',
'\1\3'),
'-') as brands,
sum(dollar_value_us) dollar_sum
from transaction_detail_mv
group by individual_id) table1
group by brands