Filtros no SQL

Fazer filtros é algo comum em qualquer análise de dados. Muitas vezes você não quer analisar a sua base inteira de clientes, só quer analisar os clientes de algum estado. Ou então só quer analisar os clientes de alguma faixa etária. Pois bem, hoje vamos ver como filtrar no SQL – use o SQL Fiddle para reproduzir esse post. 

Como sempre, criamos uma tabela para usar de exemplo:

create table base
(
    Nome varchar(50),
    UF varchar(2),
    age int,
    value decimal
);

insert into base values
('Paulo','MG', 40, 100),
('Ana' , 'BA', 30, 350),
('Bia' , 'BA', 70, 350),
('Eduardo' , 'BA', 66, 550),
('Marcelo' , 'MG', 32, 400),
('Marcos' , 'MG', 41, 350),
('Paula' , 'BA', 55, 300),
('Thiago' , 'MG', 30, 150),
('Renato' , 'BA', 24, 250),
('Sandra' , 'MG', 42, 100);

Simulamos algo que parece ser uma base de compras dos clientes da sua empresa. Temos o nome do cliente, a UF, a idade e o valor da compra feita.

Agora, vamos filtrar somente os clientes de MG, pois são os que você pretende analisar:

select * from base
where UF = "MG";

Até agora, tudo bem simples. Where significa ONDE em inglês. Ou seja, você falou para o SQL selecionar todas as colunas da tabela base onde a UF fosse igual a MG. Você poderia fazer algo semelhante para a coluna idade. Vamos selecionar somente clientes com idade superior ou igual a 40 anos:

select * from base
where age >= 40;

Você poderia usar as duas condições juntas, trazer clientes que possuem 40 ou mais e que são de MG:

select * from base
where age >= 40 and UF = "MG";

Agora, imagine que você queira trazer os clientes que são de MG, SP e PR. Para fazer isso, você deve usar o in e listar as UFs que você deseja trazer:

select * from base
where age >= 40 and UF in ("MG", "SP", "PR");

Nesse caso, não vou demonstrar a saída. Afinal, não temos ninguém de SP e PR e a saída será a mesma que o exemplo anterior.

Trazer todo mundo que tem 40 ou mais ou que é de MG é tão simples quanto dizer a frase em inglês. Se no exemplo anterior utilizamos and, agora utilizaremos or:

-- traz clientes 40+ OU clientes de MG
select * from base
where age >= 40 or UF = "MG";

Para filtrar o campo que contém determinada string, você deve utilizar o like:

-- filtra caso o nome contenha 'edu'
select * from base
where nome like '%edu%';

Se você sabe que o nome começa com alguma letra, você pode utilizar o substring(), cuja sintaxe é substring(nome_da_coluna, inicio_string, quantidade_caracteres). Ou seja, se eu busco um nome que comece com ‘ma’, eu posso simplesmente fazer:

select * from base
where substring(nome, 1, 2) = "ma";

Ou então filtrar todas as pessoas cujo nome começa com ‘P’:

select * from base
where substring(nome, 1, 1) = "p";

Pronto para começar a analisar os subconjuntos da sua base?

E se você gostou do conteúdo, por favor não deixe de comentar, dar seu feedback e compartilhar com seus amigos. De verdade, isso faz toda a diferença. Você também pode acompanhar mais do meu trabalho seguindo a conta de Twitter @EstatSite ou por alguma das redes que você encontra em Sobre o Estatsite / Contato.

Forte abraço e bons estudos!

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *