06 Consultas - rodrigomourapinto/aprenda_postgresql GitHub Wiki

Consultas

SELECT é a base para leitura de dados.

SELECT básico

SELECT produto_id, nome, preco
FROM produtos;

WHERE

SELECT *
FROM produtos
WHERE preco >= 100;

DISTINCT

SELECT DISTINCT categoria_id
FROM produtos;

ORDER BY

SELECT nome, preco
FROM produtos
ORDER BY preco DESC, nome ASC;

LIMIT e OFFSET

SELECT produto_id, nome
FROM produtos
ORDER BY produto_id
LIMIT 10 OFFSET 20;

GROUP BY

SELECT categoria_id, COUNT(*) AS quantidade
FROM produtos
GROUP BY categoria_id;

HAVING

WHERE filtra linhas antes da agregação; HAVING filtra grupos depois da agregação.

SELECT categoria_id, AVG(preco) AS preco_medio
FROM produtos
GROUP BY categoria_id
HAVING AVG(preco) > 100;

CTE simples

WITH produtos_mais_caros AS (
    SELECT *
    FROM produtos
    WHERE preco >= 500
)
SELECT nome, preco
FROM produtos_mais_caros
ORDER BY preco DESC;

A sintaxe atual de SELECT no PostgreSQL contempla WITH, DISTINCT, GROUP BY, HAVING, ordenação, paginação e outras cláusulas em uma única instrução.

Referência: https://www.postgresql.org/docs/18/sql-select.html