Allied ArchitectsAllied ArchitectsEngineer Blog

DISTINCTとGROUP BY

2013/11/14 SQL

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

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

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

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

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

それぞれこんな感じ

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

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

まずは重複を吸収。

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

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

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

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

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

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

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

それではまた~。

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

RELATION ENTRY

SQLで複数行をまとめて取りたいとき( GROUP_CONCAT )

SQLで複数行をまとめて取りたいとき( ...

2014/06/17 MySQL

ワールドカップはじまりましたね! 普段はサッカーを観戦したりはしないのですが、お祭り的な雰囲気が好きで見てしまいます。 おひさしぶりです。塚原です。 健忘禄も兼ねて mysqlの GROUP_CONCAT を紹介します。 同一のカテゴリーのデータが複数行にあるものを1カテゴリー1行で出し...

続きを読む

PHPからParseでPush通知

PHPからParseでPush通知

2014/02/5 その他

年が明けたと思ったら、もう1月も終わり。。。 今年もあっという間なのだろうなと思いつつお問い合わせ対応に追われる毎日でございます。 おひさしぶりです。塚原です。 先ほど追われているとは書きましたが、お問い合わせばかりではく合間に開発もガッツリおこなってます。この前、スマホにPush通知...

続きを読む

塚原 大祐の記事一覧へ

ページTOPへ