(再び)テーブル要素について整理しますと、
- cl_to→カテゴリー名
- cl_sortkey→記事名(厳密にはソートするためにある列だが、英語なので、そのまま記事名となる。例えばこれが日本語だと、「日本語」という記事に対して「にほんご」と振ってある(らしい))
- cat_page→そのカテゴリに属する記事ページの数
という感じです。
では本題です。
今回は以下の関数を主に扱いました。
<グループ関数>
- ave(平均を求める)
- max(最大値を求める)
- sum(合計を求める)
- count(行数をカウント)
- group by(グループ化)
- having
【各カテゴリーに属してるページ数の各種データを表示】
select AVG(`cat_pages`), MAX(`cat_pages`), sum(`cat_pages`) , COUNT(`cat_pages`) from `category`;
他にも、min(最小値を求める)もあります。
【タイプごとのページ数(のべ)を出す】
select `cl_type` , count(*) from categorylinks group by `cl_type`
groupe byは複数の列でグループ化、ここではタイプごとにグループ化しています。
【記事ごとにカテゴリー数を表示する(10以上のカテゴリーに属するもののみ)】
select `cl_sortkey` ArticleName, count(*) CategoryCount from categorylinks group by `cl_sortkey` having count(*) > 10
havingは中に集合関数を入れたいときにwhere句の代わりに使用します。
結合や副問い合わせについては、別途テーブルを用意したほうがいいなーと感じたので、また後日。
0 件のコメント:
コメントを投稿