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

オブジェクト指向 データベース層

本日も引き続き「現場で役立つシステム設計の原則」を読み進めてます。 本日は主にデータベース層の考え方について。 Contents1 データべース層1.1 要点1.1.1 典型的なダメテーブル設計1.1 …

no image

SQL基礎 結合に関して

SQL実践入門を読んで勉強しておりますが、本日は結合に関して。 Contents1 クロス結合2 内部結合3 外部結合4 結合のアルゴリズムとパフォーマンス4.1 NestedLoops4.2 Has …

no image

正規化について&EXTRACT

Contents1 正規化とは?2 第一正規化3 SQLネタ EXTRACT 正規化とは? 正確な定義は難しいですが、8割ぐらいあっている定義としては「適切なテーブルに分割すること」です。※ただし正確 …

no image

ユニークキーの設定

MySQLでのユニークキーの設定に関して。 ユニークキーの設定は下記の通り。

ユニークキーを作成した後に確認するのは下記コマンドで。 …

no image

MySQLでの日付関数

MySQLでSUMやCOUNTなんかはよく使うと思うのですが、日付の関数なんかもかなり使います。 今回は、日付の日数をとりたいときの関数を紹介。 例えばあるカラムにある日付が入力されており、現在との日 …