Charada de SQL

Esse é um tipo de “pegadinha” comum em entrevistas e que mesmo no dia a dia confunde algumas pessoas na hora de tratar os dados. Seja para surpreender o entrevistador ou para resolver rápido os problemas, você precisa ter a resposta na ponta da língua.

Suponha que você tenha uma tabela em SQL com 200 clientes e suas respectivas informações pessoais como nome, CEP e UF. Você quer separar os clientes que são de São Paulo dos demais. Para isso, você seleciona os clientes de São Paulo primeiramente:

select * from base_de_dados where UF = "SP"

e em seguida os clientes que não são de São Paulo:

select * from base_de_dados where UF <> "SP"

Curiosamente, o primeiro select trouxe 60 clientes, enquanto o segundo trouxe 110. Mas se 110+60=170 e a tabela estava com 200 clientes, o que aconteceu?

.

.

.

Pensou?

A resposta é simples, mas pode ter certeza que muitos entrevistados engasgam nessa hora. O mais provável é que sua tabela tenha algumas linhas com o campo UF vazios. De forma mais prática, você poderia incluir os nulos juntos com os diferentes de SP:

select * from base_de_dados where (UF <> "SP" or UF IS NULL)

Ou selecionar os nulos e tratá-los separadamente:

select * from base_de_dados where UF IS NULL

De qualquer forma, é uma pergunta simples e que pode fazer você perder muitos pontos. Ou poderia, porque agora você está preparado!

Anúncios

1 comentário

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s