SQL da Semana #02 — FILTER: agregações condicionais mais claras

Em relatórios SQL, é comum precisarmos calcular diferentes totais a partir do mesmo conjunto de dados. Imagine uma tabela de pedidos com a seguinte estrutura: CREATE TABLE pedidos ( id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, cliente_id bigint NOT NULL, status text NOT NULL, valor numeric(12, 2) NOT NULL, criado_em timestamp NOT NULL DEFAULT current_timestamp ); Queremos apresentar, em uma única consulta: quantidade total de pedidos; pedidos pagos; pedidos pendentes; pedidos cancelados; valor total dos pedidos pagos. A solução tradicional com CASE Uma forma comum de resolver o problema é colocar expressões CASE dentro das funções de agregação: ...

23/07/2026 · 4 min · 704 words · Dirlei Friedrich

SQL da Semana #01 — RETURNING: obtendo dados sem fazer uma nova consulta

Ao inserir um registro no PostgreSQL, é comum precisar do identificador gerado pelo banco para continuar o processamento. Uma solução possível é executar o INSERT e, em seguida, fazer outra consulta. O PostgreSQL oferece uma alternativa mais direta: a cláusula RETURNING. O problema Considere uma tabela que armazena tarefas de processamento: CREATE TABLE jobs ( id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, file_path text NOT NULL, status text NOT NULL DEFAULT 'pending', created_at timestamptz NOT NULL DEFAULT now() ); Depois de criar um job, a aplicação precisa conhecer o id, o estado inicial e a data atribuída pelo banco. ...

15/07/2026 · 2 min · 375 words · Dirlei Friedrich

PostgreSQL: origem, evolução e quem está por trás de um dos bancos open source mais avançados

O que é PostgreSQL O PostgreSQL é um sistema gerenciador de banco de dados objeto-relacional e open source. Na prática, isso significa combinar aderência forte ao padrão SQL com recursos clássicos de bancos relacionais, como transações, integridade e controle de concorrência, sem abrir mão de extensibilidade para criar tipos, funções, operadores e extensões. Esse equilíbrio explica por que ele é visto como um banco de dados generalista: funciona muito bem em sistemas transacionais e também atende cenários analíticos e geoespaciais. ...

23/03/2026 · 7 min · 1351 words · Dirlei Friedrich

EXISTS vs IN vs JOIN no SQL: qual usar e quando?

Uma dúvida comum entre desenvolvedores e analistas de dados é: Qual a diferença entre EXISTS, IN e JOIN? Essas três abordagens podem retornar o mesmo resultado, mas possuem diferenças importantes de comportamento e performance, especialmente em bases grandes. Para quem trabalha com ERP como o Protheus, onde as tabelas crescem rapidamente, entender essas diferenças ajuda a evitar consultas lentas e escolhas ruins de modelagem SQL. Neste artigo, vamos analisar: como cada abordagem funciona quando usar cada uma diferenças práticas de performance exemplos com tabelas comuns do Protheus Exemplo prático Imagine duas tabelas comuns em um cenário de ERP: ...

16/03/2026 · 4 min · 825 words · Dirlei Friedrich