本サイトは広告により収益を得ています

第1章:高度なSQLとデータ操作

第1章:高度なSQLとデータ操作

2025年12月29日
フリー検定
広告

目次

現在: 1 / 4

DBエンジニアに関する検定はこちら

面倒な会員登録も不要!すぐに受験!

無料で受験する

1-1. サブクエリ(副問合せ)の活用

サブクエリとは、SQL文の中に埋め込まれた別の SELECT 文のことです。

  • スカラ・サブクエリ: 1行1列の値を返すサブクエリ。

    • 例:平均点以上の学生を抽出する際、WHERE score > (SELECT AVG(score) FROM results) のように使用します。

  • 相関サブクエリ: 外側のクエリの値を参照しながら実行されるサブクエリ。

    • 「各カテゴリごとに、そのカテゴリの平均価格より高い商品」を探す際などに便利ですが、データ量が多いと実行速度が低下しやすいため注意が必要です。


1-2. ウィンドウ関数(OLAP関数)

行をまたいだ計算を、行を集約(GROUP BY)せずに行う強力な機能です。OVER 句を伴います。

  • ROW_NUMBER(): 各行に一連の番号を振る。

  • RANK(): 順位を振る(同率がいる場合、次は飛ぶ。例:1位, 1位, 3位)。

  • DENSE_RANK(): 順位を振る(同率がいても次は飛ばない。例:1位, 1位, 2位)。

-- 使用例:部署ごとに給与が高い順にランキングをつける
SELECT employee_name, department, salary,
       RANK() OVER(PARTITION BY department ORDER BY salary DESC) as ranking
FROM employees;
  • PARTITION BY:どのグループごとに計算するかを指定します。


1-3. 集合演算子

複数の SELECT 結果を、縦に繋げたり(和)、共通部分を抜いたり(積)する演算です。

  • UNION / UNION ALL: 2つの結果を統合します。UNION は重複を削除しますが、UNION ALL はそのまま全て繋げるため処理が高速です。

  • INTERSECT: 両方の結果に含まれる共通の行だけを返します。

  • EXCEPT (MINUS): 1つ目の結果から、2つ目の結果に含まれる行を差し引きます。


1-4. ビュー(VIEW)とマテリアライズド・ビュー

複雑なSQLに名前を付けて、あたかも一つのテーブルのように扱えるようにしたものです。

  • ビュー(VIEW):

    • 実体(データ)は持たず、アクセスするたびに元のSQLが実行されます。

    • メリット: SQLを簡略化でき、特定の列だけ見せるなどセキュリティ対策にもなります。

  • マテリアライズド・ビュー(Materialized View):

    • クエリの結果を「物理的に保存」します。

    • メリット: 複雑な集計も高速に参照できます。

    • デメリット: 元データが更新されても自動では反映されないため、明示的なリフレッシュ(更新)作業が必要です。


第1章のまとめ

  • サブクエリを使いこなすことで、複雑な条件抽出が可能になる。

  • ウィンドウ関数は、集約せずにランキングや累計を出したい時に必須。

  • 集合演算は、テーブル構造が似ているデータを扱う際に便利。

  • ビューは保守性を高め、マテリアライズド・ビューは分析クエリの高速化に貢献する。

DBエンジニアに関する検定はこちら

面倒な会員登録も不要!すぐに受験!

無料で受験する
広告

検定一覧はこちらから

様々なジャンルの検定から選んで、あなたの知識を試してみましょう。

検定一覧を見る

関連記事

広告