2017-03-21 12 views
1

Oracleでは、私が作業しているテーブルから集計値を取得する際に問題が発生しています。私は下のサンプルを提供しています。しかし、集約された観点からは、私はどこから始めるべきかも分かりません。私はケースとデートの両方の組み合わせを使用する必要があると思うが、どのようにフレーズするかわからない。Group ByとListAggを使用して集計情報を取得する

Record# Value 
    111111 KA 
    111111 RA 
    111111 HA 
    111112 KA 
    111113 RA 
    111114 HA 
    111114 RA 

望ましい結果:

私のテーブルは次のようになります。私はそれらの「値」の数が限られているが、私はそこに1,000,000以上のレコードを持って、私はそれらのレコードの構成を理解する必要が

# 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. 

:私は何を取得したいと思いことは、レコードの数を取得することです。

私はそれのためのフィドルを作成しますが、現在壊れているようです。

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'); 

編集*、

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; 

を何ゴードンLinoffが提案@を使用した後、私はもっとこの

KA 2 
RA 3 
HA 2 

代わりの

KA, RA, HA 2 
KA 1 
RA 1 
HA, RA 1 
+1

は、私は申し訳ありませんが、あなたの質問 –

+0

には適用されないタグを使用しないでください、私はポストを提出する問題を持っていたし、それがタグ発行した確信していました。私はそれを謝罪します。 – Amoner

答えて

2
のように見えた混合の結果を得ました

これを行うには、fi ELDのlistagg()を使用して、その結果によって集計:

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; 
+0

それは理にかなっています!ありがとうございました!私はそれを数分で試し、結果を更新します。 LISTAGGを使用する場合は – Amoner

+0

、私が手 たレコード数 111111 KA、KA 111111 RA 111111 HA 代わりの 111111 KA、KA、RA、HA またはより良い 111111 KA、RA、HA – Amoner

+0

私自身の問題が見つかりました。私は別のグループを持っていました:) – Amoner

関連する問題