Conceito e mecanismo
Uma linha deve representar uma entidade ou evento com identidade definida. Repetir atributos de um fundo em cada posição pode produzir atualizações contraditórias; uma tabela de fundos referenciada por chave torna essa dependência explícita. A consulta projeta colunas e expressões sobre essas relações. DISTINCT elimina repetições da projeção, não identifica automaticamente movimentos de negócio duplicados. Se projetas apenas amount, movimentos diferentes com o mesmo montante podem tornar-se uma linha. NULL representa informação ausente ou desconhecida: aritmética comum com NULL produz NULL e o teste de ausência usa IS NULL. Na semântica Oracle atual, texto de comprimento zero é tratado como NULL, enquanto um espaço é um caráter real.
Aplicação guiada
Num relatório fictício, escreve primeiro a população pretendida: fundos incluídos, estados aceites e unidade de cada linha. Usa parênteses para tornar clara a combinação de AND e OR. Literais de texto usam aspas simples; identificadores delimitados usam aspas duplas e podem exigir a caixa exata. Um alias melhora apresentação sem mudar os dados. A concatenação constrói texto e tem comportamento próprio com NULL, por isso não generalizes a regra aritmética a todos os operadores. Para obter uma página estável, define ORDER BY com um desempate único antes de limitar linhas. Testa casos com montantes iguais, valores ausentes e empates para demonstrar que o resultado cumpre a regra acordada.
SELECT movement_id, amount FROM movements WHERE fund_id = 17 AND status IN ('PENDING','FAILED') ORDER BY movement_id;
Armadilhas comuns
DISTINCT como deduplicação de negócio; NULL como zero; ordem física como contrato; aspas duplas como texto.
Tópicos relacionados: Funções, conversões e contratos de dados · Joins, granularidade e agregação · Subqueries, conjuntos e top-N
Valida identidade, população e ordem antes de interpretar o resultado.
Referência: Selection ordering and row limits · 1Z0-071 public objectives inspected 2026-09-30; revision date not published