Previous: 出力のグループ分け
Up: 出力のグループ分け
Next: group by 句 でのリスト指定
Previous Page: 出力のグループ分け
selectの出力を、グループに分けて整理したいことがある。 つぎのような例を考えて見よう。この例は、この図書館にある、「岩波書店」の本を、 ジャンルとともに表示するものである。
select 分類名,書名 from 分類コード一覧 , 分類一覧 , 書籍台帳 , 出版社一覧 where 分類コード一覧.分類コード = 分類一覧.分類コード and 分類一覧.マークナンバー = 書籍台帳.マークナンバー and 書籍台帳.出版社コード = 出版社一覧.出版社コード and 出版社一覧.出版社 = '岩波書店'
この出力から、ジャンルごとに何冊の本があるかを知るのは、結構、手間がかかる。先
に見た order by 句で、分類名について整列すれば、少しは数え易くはなるのだが、
それにしても大変である。冊数を知るには、普通なら、集約関数のcountを使えればい
いのだが、問題は、countは、selectの出力全てを数え上げるので、それぞれのジャン
ル毎の数は数えてはくれないことである。
こうした時、group by 句を用いれば、selectの出力は、グループに分けられ、しかも、 集約関数は、selectの全出力の上ではなく、このグループの上を走るようになる。
select 分類名,count(書名) from 分類コード一覧 , 分類一覧 , 書籍台帳 , 出版社一覧 where 分類コード一覧.分類コード = 分類一覧.分類コード and 分類一覧.マークナンバー = 書籍台帳.マークナンバー and 書籍台帳.出版社コード = 出版社一覧.出版社コード and 出版社一覧.出版社 = '岩波書店' group by 分類名
このように、group by 句は、selectの出力をグループに分けて、そのグループ毎に 集約関数を走らせるときに使われる。
maruyama@wakhok.ac.jp