塚原 大祐

2013.11.14

DISTINCTとGROUP BY

急に寒くなりましたね。お元気ですか?
おひさしぶりです。塚原です。

さて、私事ではありますが、少し前からお仕事内容が少し変わりまして、
ガッシガシの機能開発から運用保守と改善を主とする開発をするようになりました。

他部署からの問い合わせにも対応するので
あんなデータが欲しい、こんなデータが欲しいという要望もあり
SQLでデータ抽出する機会が増えました。
その中でなるほどね~ということがあったので書きます。

こんなデータがあったとします。

このデータを重複なくまとめて出したいとき、どうSQLを書くか。。。
そう、ご存じDISTINCTかGROUP BYのどちらかを使って書きます。

それぞれこんな感じ

この辺りは好みによりどちらかを使っていると思います。
自分はちなみにGROUP BY派でした。

そこへ来た抽出条件、「重複を吸収した上でのカウント」を出したいといわれ、
いつも通りGROUP BYで挑んだわけですよ。

まずは重複を吸収。

じゃあこれをカウントすれば!と思い

あら。カウントがグループ内に適応され各グループごとの数値が出る結果に。。。
ではどうすればと考えた苦肉の策がこれ

カウントはできましたがモッサリすぎる。。。

では、普段あまり使わないDISTINCTを使ったらどうなるのかと思い実行すると、、、

出来ました!そしてスッキリ!!!

普段は重複を吸収するだけなのであまり違いについて気にしていませんでしたが
目的によっては使い分けたほうがよいですね。。。

よく考えればまぁそうかということですが、
いつものやり方がいつも正しいというわけではないということに気づかされた出来事でした。

それではまた~。

塚原 大祐

名の由来は「天祐」。 そのままではおこがましいので 天の字から1本棒をとればと叔父がつけてくれたもの。 名に恥じぬよう世の中の助けとなるものを創り出していきたいです。 for Facebookのサポート・運用開発の部隊に所属しています。

RELATION ENTRY

塚原 大祐の記事一覧へ

▶︎