SQLでの0埋め(ゼロパディング)について詳しく解説します。基本的な方法から応用テクニック、各データベースでの違いまで幅広くカバー。あなたのSQLスキルを次のレベルに引き上げる秘訣とは?
SQLでデータをまとめる方法とDISTINCTの使い方完全ガイド
SQLでデータをまとめる際の基本的な手法からGROUP BY、DISTINCTまで、実践的なコード例を交えて解説します。データベース初心者でも実務で使える技術が身につくのではないでしょうか?
DISTINCTは重複したレコードを1つにまとめる強力なSQLコマンドです。以下のような基本構文で使用します:
SELECT DISTINCT カラム名 FROM テーブル名
具体例として、社員テーブルから部署名の重複を除いて取得する場合:
SELECT DISTINCT department_name FROM employees
複数のカラムに対してDISTINCTを使用する場合:
SELECT DISTINCT department_name, job_title FROM employees
GROUP BYを使用すると、特定のカラムでデータをグループ化し、集計関数と組み合わせて分析できます。
基本的な集計関数の例:
実践的なコード例:
SELECT
department_name,
COUNT(*) as 社員数,
AVG(salary) as 平均給与,
MAX(salary) as 最高給与
FROM employees
GROUP BY department_name
複数のテーブルのデータを結合する場合、JOINとUNIONを使い分けることが重要です。
JOINの種類と使用例:
-- INNER JOIN(共通データのみ取得)
SELECT e.employee_name, d.department_name
FROM employees e
INNER JOIN departments d
ON e.department_id = d.department_id
-- LEFT JOIN(左テーブルのすべてのデータを取得)
SELECT e.employee_name, d.department_name
FROM employees e
LEFT JOIN departments d
ON e.department_id = d.department_id
UNIONの使用例:
-- 重複を除外してデータを結合
SELECT employee_name FROM employees_2023
UNION
SELECT employee_name FROM employees_2024
-- 重複を含めてデータを結合
SELECT employee_name FROM employees_2023
UNION ALL
SELECT employee_name FROM employees_2024
大量のデータを扱う際のパフォーマンス最適化のポイント:
-- NULL値の処理
SELECT
COALESCE(department_name, '未所属') as 部署名,
COUNT(*) as 社員数
FROM employees
GROUP BY department_name
-- HAVINGを使用した集計後のフィルタリング
SELECT
department_name,
COUNT(*) as 社員数
FROM employees
GROUP BY department_name
HAVING COUNT(*) > 5
-- 文字列連結による集計
SELECT
department_name,
STRING_AGG(employee_name, ', ') as 所属社員
FROM employees
GROUP BY department_name
実務では、これらの技術を組み合わせて使用することで、より効果的なデータ分析が可能になります。