ぽかぽかコード日和

とっても暑い夏の日にプログラミングはじめました☀️

【SQL】集合演算・DISTINCT句・ORDER BY句

集合演算は、検索結果を組み合わせる。
DISTINCT句は、SELECT文の結果から重複した行を除く。
ORDER BY句は、取得したデータを指定した列名で並べ替える。

集合演算子

複数のテーブルのSELECT文の検索結果を1つにまとめる

  • テーブル同士の検索結果の列数&データ型を完全に一致させておくこと。
  • 「(ALL)」をつけることで重複した行も含めて取得できる。
    UNION(ALL), EXCEPT (ALL), INTERSECT (ALL)

UNION・・・和集合

2つの検索結果を足し合わせた行から重複を除いた集合。

SELECT 列名1, 列名2
 FROM テーブル名1
 UNION
SELECT 列名1, 列名2
 FROM テーブル名2;

  • 項目の一覧を抽出するときなどに使う。

EXCEPT・・・差集合

1つ目の検索結果から、2つ目の検索結果のデータを差し引いた行から重複を除いた集合。

SELECT 列名1, 列名2
 FROM テーブル名1
 EXCEPT
SELECT 列名1, 列名2
 FROM テーブル名2;

  • 今月の新規顧客データを抽出するときなどに使う。

INTERSECT・・・積集合

2つのSELECT文の検索結果に共通して含まれる行から重複を除いた集合。

SELECT 列名1, 列名2
 FROM テーブル名1
 INTERSECT
SELECT 列名1, 列名2
 FROM テーブル名2;

  • 前月と今月の両方に存在する顧客データを抽出するときなどに使う。

DISTINCT句

SELECT文の検索結果から重複するデータを除く。

SELECT DISTINCT 列名
 FROM テーブル名;

  • 複数の列名を指定したときは、指定した列の組み合わせが重複しない行だけが抽出される。
  • COUNT関数と組み合わせてSELECT COUNT(DISTINCT 列名) とすると、重複しない値の件数を数えられる。

ORDER BY句

SELECT文から重複を除いた検索結果のデータを並び替える。

SELECT DISTINCT 列名
 FROM テーブル名
 ORDER BY 列名 並べ方;

  • 並べ方は昇順なら「ASC」、降順なら「DESC」と指定する。
  • 複数の列名を指定したときは、
    最初の列で並び替えが優先され、同じ値が複数あれば次の列で並び替える。
  • 列ごとに並べ方を個別に指定できる。
  • 列番号を指定して並び替えることもできる。
    列番号とはSELECT句で指定した列の順番を指し、記述した順に1から数える。
  • ORDER BY句を省略すると、
    並び順が順序保証されず、実質的にランダムで表示される。

参考にしたサイト