はじめに
データサイエンティスト・MLエンジニアの実務では、データの多くはデータベースに格納されています。CSVファイルだけ扱えれば良い時代は終わり、SQLでDBからデータを取得してPythonで分析するスキルが必須です。
SQLの基礎(データ分析で使う頻出パターン)
-- 基本的なSELECT
SELECT user_id, SUM(amount) as total_amount
FROM orders
WHERE order_date >= '2026-01-01'
GROUP BY user_id
HAVING SUM(amount) > 10000
ORDER BY total_amount DESC
LIMIT 100;
-- ウィンドウ関数(ランキング・移動平均)
SELECT
date,
amount,
AVG(amount) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) as moving_avg_7d,
RANK() OVER (PARTITION BY category ORDER BY amount DESC) as rank_in_category
FROM sales;
-- CTEで複雑なクエリを整理
WITH monthly_sales AS (
SELECT DATE_TRUNC('month', order_date) as month,
SUM(amount) as total
FROM orders
GROUP BY 1
),
growth AS (
SELECT month,
total,
LAG(total) OVER (ORDER BY month) as prev_month,
(total - LAG(total) OVER (ORDER BY month)) / LAG(total) OVER (ORDER BY month) * 100 as growth_rate
FROM monthly_sales
)
SELECT * FROM growth WHERE month >= '2026-01-01';
PythonからPostgreSQLに接続する
pip install psycopg2-binary sqlalchemy pandas
import pandas as pd
from sqlalchemy import create_engine
# 接続設定
engine = create_engine(
'postgresql://username:password@localhost:5432/dbname'
)
# SQLをpandasで直接読む
query = """
SELECT user_id, SUM(amount) as total
FROM orders
WHERE order_date >= '2026-01-01'
GROUP BY user_id
ORDER BY total DESC
LIMIT 1000
"""
df = pd.read_sql(query, engine)
print(df.head())
# pandasをDBに書き込む
result_df.to_sql('analysis_results', engine, if_exists='replace', index=False)
BigQueryへの接続(Google Cloud)
pip install google-cloud-bigquery pandas-gbq
from google.cloud import bigquery
import pandas as pd
# BigQueryクライアントの初期化
client = bigquery.Client(project='your-project-id')
# クエリを実行してDataFrameに変換
query = """
SELECT date, SUM(revenue) as daily_revenue
FROM `your-project.dataset.sales`
WHERE date BETWEEN '2026-01-01' AND '2026-04-30'
GROUP BY date
ORDER BY date
"""
df = client.query(query).to_dataframe()
print(df.head())
# pandas-gbqを使うとよりシンプル
df = pd.read_gbq(query, project_id='your-project-id')
まとめ
データエンジニアリングスキルとしてSQL+Pythonの組み合わせは必須です。特にウィンドウ関数・CTEを使いこなせると複雑な集計が効率的にできます。DS検定でもSQLは出題範囲に含まれており、実務でも直結するスキルです。まずはSQLiteかPostgreSQLのローカル環境で練習して、BigQueryなどのクラウドDBへと発展させましょう。
💼 ITエンジニア転職特化
自分らしく働けるエンジニア転職を目指すなら【strategy career】
年収1000万・残業月30時間以下・リモート可の求人多数
※アフィリエイト広告を含みます
![]()
※本記事にはアフィリエイトリンクが含まれます。


コメント