2011年6月1日水曜日

MySQLでwikipediaデータを遊んでみる~part2

前回のエントリーに引き継き、sqlコマンドをひたすら叩く。

(再び)テーブル要素について整理しますと、

  • 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 件のコメント:

コメントを投稿