Consulta Formatada
Aplicando o formatador à entrada acima produz:
SELECT
u.id,
u.name,
u.email,
o.total,
o.created_at
FROM users u
INNER JOIN orders o
ON u.id = o.user_id
WHERE
o.created_at >= '2024-01-01'
AND o.status = 'completed'
GROUP BY
u.id,
u.name,
u.email,
o.total,
o.created_at
HAVING COUNT(o.id) > 5
ORDER BY o.total DESC
LIMIT 100;
Por que a Formatação SQL Importa
Revisão de código, depuração, localização de erros de lógica e diffs de pull request são todos mais rápidos com SQL formatado.
Regras de Formatação SQL
Palavras-chave em maiúsculas, uma coluna por linha em listas SELECT, condições JOIN em nova linha indentada sob JOIN, condições WHERE cada uma em sua própria linha com AND/OR no início.
Formatação de CTE
WITH
active_users AS (
SELECT id, name, email
FROM users
WHERE status = 'active'
)
SELECT ...
Funções de Janela
SELECT
user_id,
SUM(total) OVER (
PARTITION BY user_id
ORDER BY order_daté ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
) AS running_total
FROM orders;
Alternativas de Linha de Comando e IDE
SQLFluff (lint e fix), pg_format (PostgreSQL), extensão SQL Tools no VS Code, formatador integrado do DataGrip.