トップページに戻る    次のSQLパズルへ    前のSQLパズルへ

5-7 文字列のカウントを求める

SQLパズル

TABLE_A
FIELD1
---------------
(・∀・)
(・∀・)ホー
(・∀・)カエレ
(・ε・)

TABLE_B
FIELD2
---------------
AAA(・∀・)AAA
AAA(・∀・)AAA
AAA(・∀・)AAA
AAA(・∀・)ホーAAA
AAA(・∀・)カエレAAA

TABLE_AのFIELD1ごとに、TABLE_BのFIELD2でのカウントを求める。

出力結果
------------------------
(・∀・) 3レコード
(・∀・)ホー 1レコード
(・∀・)カエレ 1レコード
(・ε・)0 レコード


データ作成スクリプト

create table TABLE_A(FIELD1 varchar2(14));
create table TABLE_B(FIELD2 varchar2(20));

insert into TABLE_A(FIELD1) values('(・∀・)');
insert into TABLE_A(FIELD1) values('(・∀・)ホー');
insert into TABLE_A(FIELD1) values('(・∀・)カエレ');
insert into TABLE_A(FIELD1) values('(・ε・)');
insert into TABLE_B(FIELD2) values('AAA(・∀・)AAA');
insert into TABLE_B(FIELD2) values('AAA(・∀・)AAA');
insert into TABLE_B(FIELD2) values('AAA(・∀・)AAA');
insert into TABLE_B(FIELD2) values('AAA(・∀・)ホーAAA');
insert into TABLE_B(FIELD2) values('AAA(・∀・)カエレAAA');
commit;


SQL

select FIELD1 || (select to_char(count(*)) from TABLE_B b
                   where trim('A' from b.FIELD2) = a.FIELD1) || ' レコード'
from TABLE_A a;


解説

スカラー問い合わせでカウントを調べて、文字列の連結を行ってます。

マニュアル(TRIM)(英語)
マニュアル(TRIM)(日本語)