学生向けプログラミング入門

学生向けにプログラミングを解説。Java、C++、Ruby、PHP、データベース

HSQLDBを使用したデータベース入門その7 group by句

<<前  [TOP]  次>>


selectの出力を、グループに分けて整理したいことがあります。
冊数のようなものを知るには、集約関数のcountを用いればいいのですが、集約関数countがselectの出力全てを数え上げるので、それぞれのジャンル毎の数は数えてはくれません。
こうした時、group by 句を用いれば、selectの出力はグループに分けられ、集約関数はselectの全出力の上ではなく、このグループの上を走るようになります。


【例1:キーワードごとの冊数を調べる】

select keyword, count(title) from books, books2, keywords where books.id=books2.id group by keyword; 




このようにgroup by 句は、selectの出力をグループに分けて、そのグループ毎に集約関数を走らせるときに使われます。


グループの選び方に何らかの条件を置きたいときには、having句を用います。
whereでの条件は、selectが行を選ぶ条件であり、「group ? having」は、こうして選びだされた行からグループを選ぶ条件を与えます。
行を選ぶwhere句には、もちろん集約関数を置くことはできませんが、グループを選ぶhaving句には、集約関数を使うことは許されています。


having句で、グループの条件をおいた例を示します。


【例2:キーワードごとの冊数を調べる】

select keyword, count(title) from books, books2, keywords where books.id=books2.id group by keyword having count(title)=11; 




<<前  [TOP]  次>>