プロが教えるわが家の防犯対策術!

次のような構造テーブルがあったとします。

create table sample_tbl
(
no numeric(7) primary key,
val numeric[] not null
)

※val列は 配列型。


テーブルの中身は次のような状態

no     val
------- ----------------
1      {1,2,5}
2      {1,3,4,5}
3      {2}
4      {1,5}
5      {1,2,3,4,5}
6      {1,5}


最終的に "val列" の中身の数値ごとの件数を知りたいです。

<欲しい結果>
1 → 5件
2 → 3件
3 → 2件
4 → 2件
5 → 5件


SQLのみを用いたできるだけ単純(一時テーブルなどを使わずに)
且つ高速な方法を探しております。
何か良い方法はありますでしょうか・・?


よろしくお願いいたします。

A 回答 (1件)

8.4なら「unnset関数」が使えます。


select item,count(*) from ( SELECT unnest(val) as item from sample_tbl ) t
group by item
order by item;
    • good
    • 0
この回答へのお礼

早速のご回答をありがとうございます。

unnest関数は知らなかったので
勉強になりました。

当方の環境にて目的を満たすことを
確認きましたので、これで大丈夫だと思います。

お礼日時:2011/09/09 10:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!