Artigos de Tecnologia e Negócios > Data Science

SQL having e video games

Guilherme Silveira
Guilherme Silveira

Tenho um banco de dados com informações sobre vendas de jogos. Gostaria de saber como estão as vendas por produtora, então agrupo como de costume:


SELECT produtora, count(\*) as total FROM vendas GROUP BY produtora;

\> Sony, 500 > ... 24 linhas ... > Ubisoft, 1300 > ... 30 linhas ... > Microsoft, 400 > ... 27 linhas ...

Mas repara que tem uma dezena de resultados "menores" que não estou tão interessado. Só queremos quem vendeu mais de 500?


SELECT produtora, count(\*) as total FROM vendas WHERE sum(quantidade) > 500 GROUP BY produtora;

\> No, no, no no

O banco de dados não aceita resultados de funções de agregação na cláusula "where", pois ela é usada para selecionar os registros...antes de agregar!

Subconsulta neles!


SELECT produtora, total FROM ( SELECT produtora, count(\*) as total FROM vendas GROUP BY produtora ) as temp WHERE total > 500;

Resolvido? Sim, mas com uma "volta ao mundo".

Será que o SQL já não foi espertinho pra permitir "queriar" o resultado de uma agregação? Queria dizer que dentre os grupos que formei, aqueles que tem mais de 500, em inglês: having.


SELECT produtora, count(\*) as vendas FROM games GROUP BY produtora HAVING vendas > 500;

\> Ubisoft | 1300

Já conhece nosso curso de Oracle?

Artigos de Tecnologia e Negócios > Data Science