1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

初心者向けSQLメモ SELECT(GROUP BY)

Posted at

はじめに

SQL未経験の私が、勉強したことを整理、備忘のための記事を作成しました。
1つの記事だと長くなりすぎるので、分割した1つになります。

なお、この記事内のサンプルはすべて、以下のテーブルに対して実施したものです。

id name goods price
0001 里帆 時計 200000
0002 美桜 カバン 150000
0003 アクセサリー 300000
0004 里帆 カバン 300000
0005 美桜 アクセサリー 200000
0006 カバン 500000
0007 美桜 カバン 200000

グループ分け(GROUP BY)

  • 指定したカラムの値をキーとしてグループ化できる
  • GROUP BY句にないカラムをSELECT句で使用することはできない
  • GROUP BY句で別名を使用できない
  • 実行順序FROMWHEREGROUP BYSELECT
構文
SELECT <カラム1> ,<カラム2>...
  FROM <テーブル名>
 GROPU BY <カラム1>, <カラム2>...
サンプル
SELECT name
  FROM hogehoge
 GROUP BY name;
name
美桜
里帆
サンプル(集約関数と組み合わせ)
SELECT name, COUNT(*)
  FROM hogehoge
 GROUP BY name;
name count
美桜 3
2
里帆 2
サンプル(複数カラムでグループ化)
SELECT name, goods, COUNT(*)
  FROM hogehoge
 GROUP BY name, goods;
name goods count
美桜 カバン 2
アクセサリー 1
美桜 アクセサリー 1
カバン 1
里帆 時計 1
里帆 カバン 1
サンプル(NG)
  • GROUP BY句にないカラムをSELECT句では使用できない
    この例だとnameでグループ化されており、グループ化されたレコードにgoodsは混在しているので、goodsでSELECTできない
SELECT name, goods, COUNT(*)
  FROM hogehoge
 GROUP BY name
サンプル(これはOK)
SELECT name, COUNT(*)
  FROM hogehoge
 GROUP BY name, goods;
name count
美桜 2
1
美桜 1
1
里帆 1
里帆 1

グループ化したデータを絞り込む(HAVING)

  • 実行順序FROMWHEREGROUP BYHAVINGSELECT
サンプル
SELECT name, COUNT(*)
  FROM hogehoge
 GROUP BY name
HAVING COUNT(*) = 2;
name count
2
里帆 2

検索結果の並び替え(ORDER BY)

  • 実行順序FROMWHEREGROUP BYHAVINGSELECTORDER BY
  • 複数指定したときは、左側のキーから優先してソート
サンプル
SELECT name, goods, price
  FROM hogehoge
 ORDER BY price;
name count price
美桜 カバン 150000
美桜 アクセサリー 200000
美桜 カバン 200000
里帆 時計 200000
里帆 カバン 300000
アクセサリー 300000
カバン 500000
サンプル(降順)
SELECT name, goods, price
  FROM hogehoge
 ORDER BY price DESC;
name count price
カバン 500000
アクセサリー 300000
里帆 カバン 300000
里帆 時計 200000
美桜 アクセサリー 200000
美桜 カバン 200000
美桜 カバン 150000
サンプル(複数のソートキー)
SELECT name, goods, price, id
  FROM hogehoge
 ORDER BY price, id;
name count price id
美桜 カバン 150000 0002
里帆 時計 200000 0001
美桜 アクセサリー 200000 0005
美桜 カバン 200000 0007
アクセサリー 300000 0003
里帆 カバン 300000 0004
カバン 500000 0006
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?