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

Webの高速化に関して

Webの高速化に関してメモ。 高速化って言っても幅広いんですけどね。自分が行なっている対策に関して。 一応LAMP環境を前提にしてます。 Contents1 一番大事なのは測定2 DB対策3 フロント …

no image

SQL基礎 結合に関して

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

no image

Postgresの基礎(主にMySQLとの違いなど)

えー来月(2020年3月)より、postgresを使うかもしれないので、ちょっと復習を。 Contents1 以前のリンク2 基本コマンド比較2.1 超頻出系3 テーブル比較4 SELECT文5 do …

no image

SQLのチューニングに関して

ここ2か月ぐらいはSQLの本でがりがり勉強してきましたね。当然復習も必要かと思いますが、だいぶいろんなことを覚えたなあという気がします。 一番勉強になった本はもちろん「達人に学ぶ SQL徹底指南書」と …

no image

mavenのリモートリポジトリについて

JPAでO/Rマッパーに慣れてからというもの通常のSQLをごりごり書くのが億劫になってきました。 億劫というかいろいろとリスクがありますね。 問題点としてはコンパイルするときにエラーが検知できなかった …