この記事を読むのに必要な時間は約 6 分です。
前回の記事でグループ化してCOUNT関数で数を数えてみました。
今回はその他の集計関数を使ってみましょう。
前回の結果では集計関数は数字の結果で無いとあまり意味がない物事がわかりましたので今回は数値データを持つテーブルで試してみたいと思います。
が、残念な事にサンプルで持っている国税庁のデータも郵便のデータも良い数値データがありません。
そこで今回は、超応用編として既存のデータを元に、新規で数値データを持つテーブルを作ってみたいと思います。
今回はサンプルのデータを作ることが目的なので、説明はしません。超応用編として別途記事を起こしたいと思います。
Selectした結果を元に新規でテーブルを作成する。
今回はそのままコピー&ペーストで実行してください。
select * into shicyouson from ( SELECT [漢字都道府県名] ,[漢字市区町村名] ,count([漢字都道府県名]) as 'num' FROM [test001].[dbo].[yubin] group by [漢字都道府県名],[漢字市区町村名] -- order by [漢字都道府県名],[漢字市区町村名] )X
画面のように、1896行処理されたら成功です。
これでテスト用のテーブルが一つ追加されました。
結果についてはキャッシュが更新されていないので見た目ではわかりません。そのため、最新化を行い見た目で見えるようにします。
テーブルの右クリックメニューより 最新の情報に更新 を選択してください。
はい、新しいテーブルがでてきました。
「shicyouson」
です。
中身を見てみるとこの様にデータが入っていますね。
あと、右上のクエリを見てみると赤い波線が入っています。通常はテーブル名が間違っていたりクエリに問題がある場合に出る事が多いですが、今回は新しく作ったばかりのテーブルがキャッシュに登録されていないために出ています。これは
でリフレッシュする事により消すことができます。
今回はグループ化の話がメインなので、説明は省略致します。
あらためて、集合関数!
では、改めて集合関数を使ってみたいと思いますが、どのような集合関数があったか、おさらいしたいと思います。
MAX | 最大値 |
MIN | 最小値 |
COUNT | 何個データがあるか |
SUM | 数値の足し算 |
AVG | データの平均値 |
これですねー
それでは上から順番に実行してみましょう。
都道府県毎の市町村数で一番住所が多い箇所
/****** SSMS の SelectTopNRows コマンドのスクリプト ******/ SELECT [漢字都道府県名] ,max([num]) FROM [test001].[dbo].[shicyouson] group by [漢字都道府県名]
都道府県毎の市町村数で一番住所が少ない箇所
/****** SSMS の SelectTopNRows コマンドのスクリプト ******/ SELECT [漢字都道府県名] ,min([num]) FROM [test001].[dbo].[shicyouson] group by [漢字都道府県名]
都道府県毎の市町村毎の住所数の合計 →つまり、県毎の住所数
/****** SSMS の SelectTopNRows コマンドのスクリプト ******/ SELECT [漢字都道府県名] ,sum([num]) FROM [test001].[dbo].[shicyouson] group by [漢字都道府県名]
都道府県毎の市町村数の平均
/****** SSMS の SelectTopNRows コマンドのスクリプト ******/ SELECT [漢字都道府県名] ,avg([num]) FROM [test001].[dbo].[shicyouson] group by [漢字都道府県名]
この様な結果になりました。
集合関数の使い方としてはこのようになります。