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

Existem situações em que precisamos fazer consultas considerando algum tipo de agrupamento das linhas de uma tabela. Por exemplo: quantos clientes do sexo feminino têm na locadora? Quantos exemplares de um mesmo filme estão cadastrados na locadora? Essas perguntas envolvem algum tipo de categorização dos dados. Na primeira, é necessário separar os clientes do sexo masculino dos clientes do sexo feminino e na segunda os registros de um mesmo título. Ou seja, seria muito útil que tivéssemos algum mecanismo de criar categorias internas com os dados disponíveis sem a necessidade de modificar a estrutura da tabela.

Para resolver isso, o comando SELECT tem a cláusula GROUP BY, que agrupa as linhas com valores iguais de uma determinada coluna. Meio confuso? Um exemplo nos ajudará a entender. Imagine que precisamos saber os diferentes preços de uma locação na locadora, nessa situação utilizamos o comando SELECT, conforme apresentado no quadro a seguir.

Observe que o resultado da consulta nos informa que temos filmes sem preço cadastrado (NULL) e filmes que custam R$\$$2,50 ou R$\$$5, conforme ilustrado na Figura 5. Como foi gerado esse resultado? O GROUP BY agrupou todos os filmes que tinham mesmo valor cadastrado na coluna fil_preco como se fosse um registro único e mostrou na tela os diferentes valores presentes na coluna fil_preco segundo esse agrupamento.

Tela do MySQL após o comando <span class='strong'>SELECT fil_preco FROM filmes GROUP BY fil_preco</span>.

O principal uso da cláusula GROUP BY ocorre em conjunto com funções de agregação. As funções de agregação retornam um único valor como resultado de um conjunto de valores de entrada. As principais funções de agregação usadas no MySQL são:

  • COUNT(): Função que retorna a quantidade total de registros não-nulos de um atributo;
  • SUM(): Função que retorna a soma dos valores de um atributo;
  • AVG(): Função que retorna a média dos valores de um atributo;
  • MIN(): Função que retorna o menor valor de um atributo;
  • MAX(): Função que retorna o maior valor de um atributo.

Versão 5.3 - Todos os Direitos reservados