0
0

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 3 years have passed since last update.

SQLデータ取得応用編

Posted at

SQLデータ取得の応用

記事の概要

  • テーブル同士を結合する際の方法について学習した内容をまとめた。
  • 集計関数やグループ化についても簡単にまとめている。

複数のテーブルを結合する方法

  • 基本的な結合方法はSELECT,FROM,JOIN,ONを次のように記述して結合する。
  • ON句で結合条件はテーブルXの外部キーとテーブルYのIDを使って指定するのが一般的。

テーブルX.外部キー(ID) = テーブルY.ID

terminal
SERECT <'列名'>
FROM <'テーブル名X'>
JOIN <'テーブル名Y'>
  ON <'テーブルXとYの結合条件'>;

テーブルの左外部結合(JOIN)

  • 結合するための対象データが存在していない時に使われるJOINの記法。
  • テーブルYに参照先のデータがない時はNULLとして表示される。
terminal
SELECT <'列名'>
FROM <'左 テーブル名 X'>
LEFT OUTER JOIN <'右 テーブル名 Y'>
  ON <'テーブルXとテーブルYの結合条件'>;

テーブルの右外部結合(JOIN)

  • 左外部結合と似た方法で、指定した右テーブルの全行を出力する。
  • 左外部結合の記法と異なるのはLEFT OUTER JOINRIGHT OUTER JOINに変わっている点だけ。
terminal
SELECT <'列名'>
FROM <'左 テーブル名 A'>
RIGHT OUTER JOIN <'右 テーブル名 B'>
   ON <'テーブルAとテーブルBの結合条件'>;

テーブルの内部結合(INNER JOIN)

  • どちらかのテーブルにデータが存在していないときは対象のレコードを表示させない方法。
  • 内部結合の記法はJOIN句の前にINNERをつけるだけ。
terminal
SELECT <'列名'>
FROM <'左 テーブル名 X'>
INNER JOIN <'右 テーブル名 Y'>
   ON <'テーブルXとテーブルYの結合条件'>;

出力対象を集計する集計関数

  • SQLの機能である関数を使って取得するデータを加工する方法である。
  • 代表的な集計関数一覧↓

    SUM → 列の合計値を求める。

    MAX → 列の最大値を求める。

    MIN → 列の最小値を求める。

    AVG → 列の平均値を求める。

    COUNT → 個数を求める。

行のグループ化(GROUP BY)

  • 特定のグループごとに集計してデータをまとめたいときに使う方法。
  • GROUP BYという構文を使ってグループに基づく集計結果を取得することが可能。
terminal
SELECT <'列名'> FROM <'テーブル名'> WHERE <'絞り込む条件'> GROUP BY <'グループ化する列名'>;

グループ化したデータをさらに限定するHAVING

  • 集計関数で取得した結果に他してさらに絞り込むための条件を追加する方法。
terminal
HAVING <'集計関数での結果に対する条件'>;

まとめ

  • テーブル同士を結合することによったやや応用的なデータ取得方法について具体的な記法を交えて記載した。
  • SQLに用意されている集計関数を使うことで、様々な便利な機能が使える。
  • 行をグループ化することによって、特定のグループごとに集計して、結果を求めることができる。
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?