Cursos / Informática para Internet / Banco de dados / Aula

arrow_back Aula 11 - Linguagem SQL – Consulta avançada de tabelas

Consultas usando agrupamento de dados - pt.2

Agora que conhecemos as funções de agregação, vamos fazer uso delas em conjunto com a cláusula GROUP BY. Vamos resolver as questões que levantamos no início da nossa discussão.

  1. Quantos clientes do sexo feminino têm na locadora?
  2. Quantos exemplares de um mesmo filme estão cadastrados na locadora?

A solução dessas questões é apresentada no quadro a seguir.

Na primeira consulta, agrupamos os dados de acordo com o sexo do cliente e contamos quantos registros estão associados a cada categoria, no caso, Masculino (M) e Feminino (F). Na segunda consulta, agrupamos os dados de acordo com o título do filme e contamos quantos registros existiam para cada título. O resultado é ilustrado na Figura 7.

Tela do MySQL após diversas pesquisas com o comando SELECT, usando funções de agregação junto com a cláusula GROUP BY.

Você percebeu algo diferente na segunda consulta ilustrada no exemplo anterior? Apareceu um termo diferente na expressão “COUNT(fil_titulo) AS Unidades”. Esse termo AS é uma cláusula utilizada no SELECT para renomear o nome de uma coluna de resultados e pode ser usado para deixar a consulta mais legível. No exemplo indicado, ao invés de aparecer no resultado uma coluna intitulada COUNT(fil_titulo), apareceu uma coluna intitulada Unidades, que torna mais fácil o entendimento do resultado da pesquisa. Podemos dizer que demos um apelido para a coluna apresentada.

Quando fazemos uma pesquisa num agrupamento de dados, é possível restringir os dados que serão agrupados de acordo com alguma condição. Para isso, utilizamos a cláusula HAVING em conjunto com GROUP BY. Por exemplo, considere a seguinte questão: dentre os filmes cadastrados na locadora, quais possuem mais de uma unidade? A solução é apresentada no quadro a seguir.

Você deve ter notado que nosso banco de dados da locadora possui apenas 4 filmes distintos (E o vento Levou, O silêncio dos inocentes, Procurando Nemo e Cidade de Deus). Para que o exemplo abaixo apresente duas unidades do filme “E o vento Levou” será necessário inserir uma nova cópia deste filme no banco de dados. É importante que o título do filme seja exatamente igual ao titulo “E o vento Levou” já inserido anteriormente. Se tiver dúvidas, consulte o seu tutor.


Nesse caso, são apresentados os resultados apenas dos filmes que após a classificação pelo título apresentam mais de uma unidade cadastrada, conforme ilustrado na Figura 8.

Tela do MySQL após o comando SELECT, junto com as cláusulas GROUP BY e HAVING.

Versão 5.3 - Todos os Direitos reservados