https://www.canva.com/design/DAGg5WR5naY/EwTG-g3E_R9SqNEJCLYjww/view?embed
Primeiro vamos aprender a conectar com o postgres?
postgresql://abdb_user:NmKsxGQnVZqnpCZv9L0xIfFCTseiIVL4@dpg-cv51m57noe9s73ecs32g-a.oregon-postgres.render.com/abdb
Vamos descobrir o que tem neste banco de dados?
Este exemplo utiliza uma CTE (Common Table Expression) para extrair o valor total dos pedidos por cliente e depois faz uma seleção adicional. Em seguida, usamos EXPLAIN ANALYZE para analisar seu desempenho.
EXPLAIN ANALYZE
WITH total_por_cliente AS (
SELECT
c.id AS cliente_id,
c.nome AS cliente,
SUM(pr.preco * p.quantidade) AS valor_total
FROM pedidos p
JOIN clientes c ON p.cliente_id = c.id
JOIN produtos pr ON p.produto_id = pr.id
GROUP BY c.id, c.nome
)
SELECT
cliente_id,
cliente,
valor_total
FROM total_por_cliente
WHERE valor_total > 5000
ORDER BY valor_total DESC;
total_por_cliente:
pedidos, clientes e produtos.SUM(preco * quantidade)).EXPLAIN ANALYZE:
Agora, vamos demonstrar o uso de funções de janela (window functions) para rankear clientes de acordo com o valor total de compras e EXPLAIN ANALYZE:
EXPLAIN ANALYZE
SELECT
c.id AS cliente_id,
c.nome AS cliente,
SUM(pr.preco * p.quantidade) AS valor_total,
RANK() OVER (ORDER BY SUM(pr.preco * p.quantidade) DESC) AS rank_valor
FROM pedidos p
JOIN clientes c ON p.cliente_id = c.id
JOIN produtos pr ON p.produto_id = pr.id
GROUP BY c.id, c.nome
ORDER BY rank_valor;
SUM(preco * quantidade)) por cliente.RANK() OVER (ORDER BY SUM(...) DESC).