CodeGym /Cursos /SQL SELF /Exemplos de uso de NULL em tarefas reais: cálculos, filtr...

Exemplos de uso de NULL em tarefas reais: cálculos, filtragem, ordenação

SQL SELF
Nível 10 , Lição 3
Disponível

Trabalhar com NULL aparece em vários cenários: desde lidar com dados faltando em relatórios até filtrar e ordenar. Se tu tivesse que escolher entre deixar um valor faltando na tabela ou colocar um número estranho tipo 9999, a maioria ia preferir NULL — sim, eu sei que não é o mais prático, mas pelo menos é honesto. Bora ver alguns casos típicos.

Exemplo: ordenando produtos com preços ausentes

Imagina que a gente gerencia uma loja online e tem uma tabela de produtos:

product_id name price
1 Telefone 45000
2 Notebook NULL
3 Câmera 25000
4 Relógio inteligente NULL

A gente quer ordenar os produtos pelo preço, mas os produtos sem preço (NULL) têm que ficar no final.

SELECT product_id, name, price
FROM products
ORDER BY price ASC NULLS LAST;

Resultado:

product_id name price
3 Câmera 25000
1 Telefone 45000
2 Notebook NULL
4 Relógio inteligente NULL

Repara na construção chave NULLS LAST. Por padrão, o PostgreSQL no ASC coloca os NULL no começo, mas com esse parâmetro a gente joga eles pro final.

Exemplo: filtrando estudantes sem data de nascimento

A gente tem uma tabela de estudantes e quer pegar só quem não tem data de nascimento informada.

student_id name birth_date
1 Otto Art 2000-01-15
2 Anna Song NULL
3 Alex Lin 1999-05-10
4 Maria Chi NULL

Query:

SELECT student_id, name
FROM students
WHERE birth_date IS NULL;

Resultado:

student_id name
2 Anna Song
4 Maria Chi

A gente conseguiu puxar a informação dos estudantes que não têm data de nascimento conhecida.

Exemplos de uso de funções pra lidar com NULL

Exemplo: cálculo do valor total considerando possíveis NULL

Na tabela de pedidos ficam os valores dos pedidos. Só que nem sempre os dados estão completos, então a gente precisa considerar que nesses casos o valor pode ser 0.

Exemplo de dados:

order_id customer_name order_amount
1 Alex 1200
2 Maria 2500
3 Max NULL
4 Xena 3100

Query:

SELECT SUM(COALESCE(order_amount, 0)) AS total_amount
FROM orders;

Resultado:

total_amount
6800

A gente usa COALESCE(order_amount, 0) pra trocar NULL por 0 antes de somar. Assim evita erro ou conta errada.

Exemplo: mostrando texto no lugar de NULL

customer_name order_amount
Alex 1200
Maria 2500
Max NULL
Xena 3100

No relatório, precisa mostrar o texto "Não informado" pra todos os dados vazios no lugar de NULL.

SELECT
    customer_name, 
    COALESCE(order_amount::TEXT, 'Não informado') AS order_status
FROM orders;

Resultado:

customer_name order_status
Alex 1200
Maria 2500
Max Não informado
Xena 3100

COALESCE() deixa mostrar o texto que tu quiser se o valor for NULL.

Cenários mais avançados com NULL

customer_name order_amount
Alex 1200
Maria 2500
Max NULL
Xena 3100

O objetivo é ordenar os pedidos de modo que os pedidos sem valor fiquem no começo, e depois do maior pro menor valor.

SELECT customer_name, order_amount
FROM orders
ORDER BY order_amount DESC NULLS FIRST;

Resultado:

customer_name order_amount
Max NULL
Xena 3100
Maria 2500
Alex 1200

Aqui a gente usou NULLS FIRST pra colocar os NULL antes de todo mundo.

Exemplo: filtrando dados e trocando valores NULL

student_id name birth_date
1 Otto Art 2000-01-15
2 Anna Song NULL
3 Alex Lin 1999-05-10
4 Maria Chi NULL

Em alguns relatórios, precisa mostrar só as linhas onde o valor tá preenchido ou trocar por "Desconhecido" se for NULL.

SELECT
    student_id, 
    name, 
    COALESCE(birth_date::TEXT, 'Desconhecido') AS birth_date_info
FROM students;

Resultado:

student_id name birth_date_info
1 Otto Art 2000-01-15
2 Anna Song Desconhecido
3 Alex Lin 1999-05-10
4 Maria Chi Desconhecido

Isso é muito útil pra relatórios onde é importante mostrar que o dado tá faltando.

Dicas práticas

Trabalhar com NULL exige atenção redobrada. Olha só umas dicas boas:

  • Usa IS NULL e COALESCE() pra checar e trocar valores ausentes.
  • Lembra que funções agregadas ignoram NULL, menos o COUNT(*).
  • Pra ordenar, lembra das palavras-chave NULLS FIRST e NULLS LAST.
  • Nos relatórios, sempre diz como tu trata NULL, pra não dar confusão com a galera.

Essas dicas vão te ajudar não só a escrever queries certas, mas também a impressionar na entrevista. Saber lidar com dados reais sempre vale mais do que só teoria!

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION