SQLを貼り付けて「整形」または「圧縮」を実行すると、読みやすい形に変換します。処理はブラウザ内で完結し、入力内容は送信しません。
SQLだけから推測できる範囲の注意点を表示します。
サンプルを入力欄に挿入して、整形や圧縮を試せます。
必要な列だけを選び、WHEREで条件を絞り込む基本形です。
SELECT id, name, status
FROM users
WHERE status = 'active'
ORDER BY created_at DESC
LIMIT 20;LEFT JOIN を使うと主テーブルの行を保ったまま関連データを取得できます。
SELECT o.id, u.name, o.total
FROM orders o
LEFT JOIN users u ON u.id = o.user_id
WHERE o.created_at >= DATE '2024-01-01';GROUP BY は集計、HAVING は集計結果に対する条件です。
SELECT user_id, COUNT(*) AS orders, SUM(total) AS amount
FROM orders
GROUP BY user_id
HAVING SUM(total) >= 10000
ORDER BY amount DESC;CTE(Common Table Expression: 共通テーブル式)は、WITH句で一時的な名前付き結果を作る仕組みです。
WITH recent_orders AS (
SELECT *
FROM orders
WHERE created_at >= CURRENT_DATE - INTERVAL '30 days'
)
SELECT user_id, COUNT(*) AS orders
FROM recent_orders
GROUP BY user_id;集計を行単位で保持したいときに便利な構文です。
SELECT user_id, created_at, total,
SUM(total) OVER (PARTITION BY user_id ORDER BY created_at) AS running_total
FROM orders;関連データの有無を確認する方法で、サブクエリ結果の存在をチェックします。
SELECT u.id, u.name
FROM users u
WHERE EXISTS (
SELECT 1
FROM orders o
WHERE o.user_id = u.id
);