Olá pessoal, neste artigo veremos como agrupar dados com GROUP BY, tornando mais rápida e fácil a tarefa de totalizar um conjunto de dados. Veremos também o uso de outras cláusulas em conjunto com o GROUP BY. Acompanhem:
GROUP BY – Com o uso do GROUP BY, é possível agruparmos diversos registros com base em uma ou mais colunas de uma tabela. Por exemplo, os produtos de uma loja podem ser agrupados pelo preço (maior valor, menor valor), pelo tipo (livros, filmes, séries), etc. É isso que muitas lojas de e-commerce fazem, por exemplo, onde elas agrupam geralmente no canto esquerdo da tela diversas opções para o usuário customizar sua escolha na hora de comprar um determinado produto.
Importante ressaltar que a cláusula GROUP BY é comumente usada em conjunto com as seguintes funções (as três últimas vistas na parte 11):
· SUM() – Função que permite a soma dos registros;
· AVG() – Função que permite o cálculo da média dos valores;
· COUNT() – Função usada para contar os registros;
· MAX() – Função que retorna o maior valor de um conjunto de valores;
· MIN() – Função que retorna o menor valor de um conjunto de valores;
A cláusula GROUP BY é responsável por determinar em quais grupos devem ser colocadas as linhas de saída. Caso a cláusula SELECT contenha funções agregadas, a cláusula GROUP BY realiza um cálculo a fim de chegar ao valor sumário para cada um dos grupos.
Nas situações em que se especifica a cláusula GROUP BY, deve ocorrer uma das seguintes situações: ou a expressão GROUP BY deve ser correspondente à expressão da lista de seleção ou cada uma das colunas presentes em uma expressão não agregada na lista de seleção deve ser adicionada à lista de GROUP BY.
Quando usamos o GROUP BY, mais não empregamos o uso do ORDER BY, o resultado obtido são os grupos em ordem aleatória, lembrando que é essencial o uso do ORDER BY para determinar a ordem de apresentação dos dados.
Veja abaixo a sintaxe do GROUP BY:
[
GROUP BY [ ALL ] expressão_group_by [ ,...n ]
[ WITH { CUBE | ROLLUP } ]
]
Em que:
· ALL – Esse argumento é responsável por determinar a inclusão de todos os grupos e conjuntos de resultados. Importante dizer que valores nulos são retornados às colunas resultantes dos grupos que não correspondem aos critérios de busca quando especificamos o argumento ALL.
· Expressão_group_by – Também conhecida como coluna agrupada, trata-se de uma expressão na qual o agrupamento é realizado. Ela pode ser especificada como uma coluna ou como uma expressão não agregada que faz referência à coluna que a cláusula FROM retornou, mais não é possível que a especifiquemos como um alias de coluna determinado na lista de seleção. Outra coisa: não podemos usar em expressão_group_by as colunas de um destes tipos: image, text e ntext.
Obs: as queries que acessam tabelas remotas não são capazes de suportar a cláusula GROUP BY ALL caso essas queries também possuam uma cláusula WHERE.
Como consideração final, devemos ter em mente que o argumento ALL não pode ser usado em conjunto com os operadores CUBE e ROLLUP. A quantidade de itens da expressão_group_by é limitada de acordo com o tamanho apresentado pela coluna GROUP BY, com as colunas agregadas e com os valores referentes à query nas situações em que as cláusulas GROUP BY não possuam os operadores CUBE e ROLLUP. Nas situações em que tais operadores são especificados, são permitidas até 10 expressões de agrupamento.
Na próxima e parte veremos alguns exemplos práticos com o GROUP BY. Veremos também o uso da cláusula HAVING em conjunto com o GROUP BY, aguardem!
Assim finalizo o artigo. Muito obrigado a todos!
Um abraço, e até o próximo artigo.
Wellington Balbo de Camargo