在Oracle中,我遇到了一个问题,该问题从我正在使用的表中获取聚合值。我正在提供下面的示例。但从总体角度来看,我甚至不知道从哪里开始。我想我需要结合使用案例和结合,但我不知道如何对它进行说明。使用Group By和ListAgg获取聚合信息
我的表看起来像这样:
Record# Value
111111 KA
111111 RA
111111 HA
111112 KA
111113 RA
111114 HA
111114 RA
期望的结果。我想获得的就是在哪里记录数:
# Records only have KA only.
# Records only have RA only.
# Records only have RH only.
# Records only have HA only.
# Records only have KA and RA.
# Records only have KA and RH.
# Records only have KA, RA and RH.
and etc.
我有那些“价值”的数量有限,但我有超过100万的记录那里,我需要了解这些记录组成。
我会为它创建一个小提琴,但它似乎目前已被打破。
create table myTable(record varchar2(100), value varchar2(100));
insert into myTable(record ,value) values(111111,'KA');
insert into myTable(record ,value) values(111111,'RA');
insert into myTable(record ,value) values(111111,'HA');
insert into myTable(record ,value) values(111112,'KA');
insert into myTable(record ,value) values(111113,'RA');
insert into myTable(record ,value) values(111114,'HA');
insert into myTable(record ,value) values(111114,'RA');
编辑*使用的是什么@戈登 - Linoff建议后,
select valuelist, count(*) as cnt
from (select record, listagg(value, ',') within group (order by value) as valuelist, count(*) as cnt
from mytable
group by record
) r
group by valuelist
order by cnt, valuelist;
我得到了一个混合的结果,看上去更像是这个
KA 2
RA 3
HA 2
而不是
KA, RA, HA 2
KA 1
RA 1
HA, RA 1
请不要使用不适用于您的问题 –
对不起标签,我刚提交后一个问题,并相信它是标签问题。我为此道歉。 – Amoner