【その8】sqlserver Selectクエリ(集計結果に対してhaving区で条件を指定する)

【その8】sqlserver Selectクエリ(集計結果に対してhaving区で条件を指定する)

この記事を読むのに必要な時間は約 4 分です。

前回までで集計関数を使ったSelect文を書いてみました。

今回はこの集計結果に対して、条件指定をしてみたいと思います。

having区を使ってみる

今回はこの状態からスタートしてみたいと思います。

前回までと同様のやり方で、各都道府県の中で住所の数を求めましょう。

クエリは以下の通りです。

/****** SSMS の SelectTopNRows コマンドのスクリプト  ******/
SELECT TOP (1000) [漢字都道府県名] 
      ,sum([num])
  FROM [test001].[dbo].[shicyouson]
  group by [漢字都道府県名]

結果はこの通りですね。

さて、このグループ関数で集計した「集計した結果」に対して、条件指定をしたい場合が出て来たります。シチュエーションとしては

住所の数が5000個以上ある都道府県を探したい!

とかですね。

あまり難しい事を考えない場合はこういうやり方もあります。

/****** SSMS の SelectTopNRows コマンドのスクリプト  ******/
SELECT TOP (1000) [漢字都道府県名] 
      ,sum([num])
  FROM [test001].[dbo].[shicyouson]
  group by [漢字都道府県名] 
  order by sum([num]) desc

並び替えをするだけですね。

 

 

人間が目視で確認するのであれば正直十分です。

ただ、出力結果として条件を満たさないといけない場合はそうはいきません。そこで利用するのが having区です。having区は 集計関数で集計した結果に対して条件指定を行います。記載方法としては以下のようになります。

/****** SSMS の SelectTopNRows コマンドのスクリプト  ******/
SELECT TOP (1000) [漢字都道府県名] 
      ,sum([num])
  FROM [test001].[dbo].[shicyouson]
  group by [漢字都道府県名] 
  having sum([num]) > '5000'

この通り、条件で指定した場所のみ出てきました。

集計結果に対して何かしたい場合に利用する物は having区となります。

よく覚えておいてくださいね。

 

今まで1回から8回で基本的なSQL文の書き方を解説してきましたが、自分が初心者で無いと口では言わないけど、心の中で思っている人は見てもらわなくても良いレベルの内容です。

ただ、学校を卒業して今から社会人になる予定のエンジニア候補生の皆さんは一度、Blogに記載している内容通りの事を実行してみてください。みるだけでは意味がありません。こういう物は自分の手が覚える物であり、頭で覚える物ではないからです。

[speech_bubble type=”drop” subtype=”L1″ icon=”02ukiyoe/tomi_R.png” name=”とみさん”]最後にうまいこと言って閉めましたね。[/speech_bubble]

タイトルとURLをコピーしました