SQL_重複排除と集計

今回は重複排除(distinct句)と集計(group by)の紹介です。
どちらも挙動が似ているのでまとめて紹介します。

【機能説明】

・重複排除

select文の結果について、重複を排除することができる。

・集計

指定したカラムで集計を行うことができる。
(結果として重複排除もされる)
select文で集計関数を使用することができるようになる。
(該当行数を返すCOUNT関数、最大値を返すMAX関数、最小値を返すMIN関数等)
なお、having句でgroup byで集計した結果に対して条件で抽出することができる。
(where句も同じように抽出を行うが、where句は集計前に、having句は集計後に抽出する違いがある)

【文法】

・重複排除

・集計

【対象テーブル例】

・ご意見

【使用例】

asは省略可能である。

・重複排除(distinct句)

※店舗ID=1、商品ID=4の行は2行存在するが、重複排除され1行のみ出力された。

・重複排除(group by句)

※この例のように、order by句でdistinct句と同じように重複排除を実現できる。
 しかし、本来、order by句は後述の集計で使うので、重複排除のために使うのであればdistinct句の方が意図は伝わりやすい。
 また、distinct句とorder by句で実行時間に差が出る場合もある。

・集計(count関数)

※count関数の引数にカラム名を指定すると、そのカラムがNULLではない件数を返す。
 例えば、count(ご意見件数)なら、店舗ID=1、商品ID=4の行のご意見件数は1になる。

・集計(having句での抽出)


いかがでしたでしょうか。

今回は、SQLでの重複排除と集計について記事を書きました。
SQLではこのような操作も簡単に書くことができます。
特に、運用作業でデータ加工する時に重宝すると思います。

次回は、SQLを入れ子で実行する副問合せ・相関副問合せについて取り上げたいと思います!

カテゴリーSQL

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA