Aproveite o mês das
carreiras na Alura

Até 44% OFF

Falta pouco!

00

DIAS

00

HORAS

00

MIN

00

SEG

2 queries e uma conta final em um único SQL

Alura
Guilherme Silveira
Guilherme Silveira

Compartilhe

Quantos usuários do Alura já compraram livros na Casa do Código e quantos não? Fácil, executa duas queries, cria uma stored procedure (aiiiiiii meu coração), devolve um divido pelo outro:


select count(comprouNaCDC) as compraram 
from Aluno 
where comprouNaCDC = 1; > 200

select count(comprouNaCDC) as nao_compraram 
from Aluno 
where comprouNaCDC = 0; > 300

E uma stored equivalente a:


porcentagem = compraram / (compraram + nao_compraram) > 0.40

Como diz minha sobrinha de 2 anos: -Uxi! E sai correndo, fugindo de medo.

Banner da Imersão de IA da Alura com Google Gemini. Participe de aulas gratuitas online com certificado. Domine as inovações mais recentes da IA.

Poderia agrupar, e fazer a divisão:


select count(comprouNaCDC), comprouNaCDC 
from Aluno 
group by comprouNaCDC; > 200, 1 > 300, 0

E usar a mesma fórmula em procedure ou programação: uxi.

Podemos só contar o total :)


select count(*) as total from Alunos; > 500

Se o seu banco usa 0 ou 1 para marcar quem comprou, soma todo mundo:


select sum(comprouNaCDC) as compraram 
from Alunos; > 200

Calma lá, é só dividir quem comprou pelo total. Uma unica query:


select sum(comprouNaCDC) / count(*) as porcentagem 
from Alunos; > 0.40

Tá lá, sem subquery, sem procedure, sem temporary table, doidice.

Desafio: e se o campo não fosse 0 e 1? Como você transformaria uma string 'S' e 'N' para a query acima funcionar? *CASO* você tenha uma sugestão, compartilhe!

Gostou do post? Quer aprender mais? Que tal dar uma olhada em nossos cursos de Banco de Dados?

ps: Essa boa prática é a primeira parte de uma super prática animal sugerida pelo aluno do Alura, Silvio Silva!

Guilherme Silveira
Guilherme Silveira

Co-fundador da Alura. Com mais de 20 anos de ensino de tecnologia, criou mais de 100 cursos. Possui formação em engenharia de software, viés matemático e criativo, além de ser medalhista de ouro em competições nacionais de computação, tendo representado o Brasil nos mundiais. Participante de comunidades open source e de educação em tecnologia, tendo escrito 7 livros. Faz mágica e fala coreano no tempo livre.

Veja outros artigos sobre Data Science