skillup

技術ブログ

Database

SQL基礎 case&groupbyの活用について

投稿日:2016年10月12日 更新日:

主に集計タイプの計算で大活躍するgroupbyについて。

主な用途は集計とカット。特にcase式と連動した集計はかなり使える

例 nameとageで構成されたテーブルがあるとして、年代ごとの人数を出したいときなど(例えば未成年,20~69,70以上に分けたいときは下記のSQLで一発)

注意点としてグルーピングのキーをgroupbyとセレクトキーの両方に使う。

細かい構文上の注意点としてはgroupbyのcase文にasをつけないこと。※SELECTで定義しておけばGROUP BY age_segなどと書くこともできるようですが、どちらかというと非推奨。

PARTITION BY句を使うと集計せずにデータを出すことができ、なおかつソートまでできる。ただしMySQLにはない模様。

http://mickindex.sakura.ne.jp/database/db_support_sinan.html

使用例

name | age | age_seg | age_rank_in_class
山田   | 15   |    子供    | 1
田中   | 19   |    子供    | 2
渡邊   | 23   |    大人    | 1
佐藤   | 45   |    大人    | 2
鈴木   | 74   |    老人    | 1

参考文献
SQL実践入門

-Database
-

執筆者:


comment

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

関連記事

no image

データベースの権限設定

データベースを作成するときに

と入力していますが、ほぼ機械的にこれを売っているのでこれを機にどんな使い方があるのかを調べてみました。 …

no image

データベースのテスト環境作成

現在作っているシステムのリリースが近づいており、本番に近い環境を作成しお客様に見てもらうことに。 こういった手順はマニュアル化しておいたほうが楽だろうと思い、自分的にメモ 1 現状運用されているデータ …

no image

MySQLのメモリ設定

実務で結構サーバーをヘビーに使われるお客さんがいて、SQLが遅くなったりとしています。 なんとか対策しないといけないので、いろいろと調査をいます。 それで今回はMySQLのメモリ問題など。 MySQL …

no image

herokuでMySQL

昨日に続き、heroku+MySQLのメモです。 herokuはディフォルトではPostgreSQLですが、アドオンを使うとMySQLも使えるようになります。 使い方ですが、herokuの管理画面でク …

no image

データクレンジング

リレーショナルデータベースでデータを管理する前に、しなくてはいけないことはデータをデータベースに登録できる形に整形することです。 このことをデータクレンジングといいます。 これを行わずに何も考えずにデ …