【その6】sqlserver Selectクエリ(グルーピングしてみる) – ざったなぶろぐ
より分かりやすく!格安スマホのギアベストクーポン紹介ページリニューアル!!(毎日更新です!!)
XBRL文書の解析に成功しました!!

データ収集に成功しました!これはうれしい!!

ゆうほうを見る!!

【その6】sqlserver Selectクエリ(グルーピングしてみる)

この記事は約 5 分で読めます。

今回のテーマはグルーピングです。検索する対象をグループ化してみます。

グルーピングしてみようぜ!

このグループ化ですが、グループ化しただけではあまり意味がありません。意味があるのはグループ化した結果に対して何をするか?となります。

それではさっそく見てみましょう。

いつも通り[ssms]から起動してください。

こんな感じです。

それではこのデータについてグループ化を行います。

都道府県毎のデータを作成する。

グループ化するのに必要な構文は以下です。

group by ●●●●

ほら、これもたいしたことないですね。

それでは実際にやってみましょう。

サンプルでは都道府県毎の●●を求めてみたいと思っていますので、グループ化する対象は

[漢字都道府県名]になります。

はい、エラーになりました。

なにか、小難しいことが書かれています。

メッセージ 8120、レベル 16、状態 1、行 4
列 ‘test001.dbo.yubin.漢字市区町村名’ は選択リスト内では無効です。この列は集計関数または GROUP BY 句に含まれていません。

慣れてきたら簡単です。

これは、グループ化した結果に対して、グループ化していない結果が混ざっていることにより発生しています。今回の場合は、

  1. [漢字市区町村名]
  2. [漢字町域名]

の、二つが対象ですね。

そのため、グループ化していないこのカラムを削除して再実行します。

はい!この通り都道府県の一覧がでてきました

でてきました・・・・

それだけのデータですね。

まったく楽しくないです。

そもそもグループ化する目的は何なのか?

そうです。

何か目的があってグループ化をします。グループ化したデータは集計関数にて集計してその結果を表示させることができます。

集計関数の例として以下の物があります。

MAX 最大値
MIN 最小値
COUNT 何個データがあるか
SUM 数値の足し算
AVG データの平均値

試しにCOUNTを使って何個データが存在しているかを出してみましょう。

 

はい。各都道府県に何個づつ市町村が存在するかが表示されましたね。

同じ感覚で 各都道府県の最大値を求めてみましょう。

とみさん
ん?

ゆきじさん
ん?

やすさん
ん?

たろさん
ん?

えつさん
あ!

はるさん
あほや

そうです。

これは不可能なのです。

何故ならば、各都道府県の最大値とは何を言っているのか?

そんなものは存在しません。

実際にクエリを実行してみますと、エラーにはなりませんがこの様に意味のないデータができあがります。

それぞれの都道府県名と同じデータですね。

また、平均(AVG)を求めようとすると明確にエラーになります。

 

 

メッセージ 8117、レベル 16、状態 1、行 4
オペランドのデータ型 nvarchar は avg 演算子では無効です。

グループ化した後は、グループ化した後で何をしたいかを意識しましょう。

並び替え

上記までで、各都道府県毎に何個の市町村が存在するかはわかりました。

このデータについてぱっと見で

どこの都道府県が一番市町村が多いのか

を見た目で分かるように並び替えしたいと思います。

並び替えするときに必要な構文は以下です。

order by ●●●●

ほら、これもたいしたことないですね。

実際に追加してみましょう。

値が小さいほうから並んでしまいますね。これは初期値が昇順になっているからです。

このままだと見づらいので、並び替えを降順にしてみましょう。

構文は以下の通りです。

order by ●●●● desc

 

ほぅ 正解は北海道なんですね。広いですからそんなものですかね

 

 

因みに、降順に並び替えるのに desc とつけましたが昇順の並び替えは asc をつけます。

ただ、デフォルトがそうなっているので、わざわざつける必要はありません。

グループ化は記事が長くなってきたので一度ここで区切ります!

 

関連記事(一部広告含む)
スポンサーリンク
2.初心者向けクエリ
kazuyoumeをフォローする
ざったなぶろぐ