DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da SQL Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!


artigo sql magazine 48 - Desvendando a cláusula GROUP BY – Parte 2

Artigo da revista SQL Magazine edição 48.

Esse artigo faz parte da revista SQL Magazine edição 48. Clique aqui para ler todos os artigos desta edição

 

SQL

Desvendando a cláusula GROUP BY – Parte 2

 

Daremos continuidade neste artigo ao estudo sobre a cláusula Group By. Focaremos nesta matéria usos mais avançados deste recurso da SQL.

Agrupamento através de WITH ROLLUP

A cláusula GROUP BY possui muitas facilidades para agrupar e calcular informações agregadas, tais como o número total das penalidades ou a soma de todas as penalidades. Entretanto, até o que vimos na primeira parte desta matéria, todos os relatórios retornam resultados nos quais todas as informações estão no mesmo nível de agregação. Mas e se nós quisermos ver as informações pertencentes aos diferentes níveis de agregação contidos dentro de um relatório? Imagine que nós queremos ver, em um relatório, valor total das penalidades para cada jogador e, também, o valor total das penalidades para todos os jogadores. Isto não é possível com os formulários das cláusulas de GROUP BY que nós discutimos até aqui. Para esta finalidade, mais de dois agrupamentos dentro de uma cláusula de GROUP BY são requeridos. Adicionando a especificação WITH ROLLUP à cláusula de GROUP BY, isto se torna possível.

 

Exemplo 1. Para cada jogado, descubra a soma de todas as suas penalidades mais a soma de todas as penalidades.

Uma maneira de combinar esses dois agrupamentos em um relatório é usar o operador UNION (ver Listagem 1).

 

Listagem 1. Consulta do exemplo 1.

SELECT   PLAYERNO, SUM(AMOUNT)

FROM     PENALTIES

GROUP BY PLAYERNO

UNION

SELECT   CAST(NULL AS SIGNED INTEGER), SUM(AMOUNT)

FROM     PENALTIES

 

Para a consulta da Listagem 1 temos o resultado apresentado na Listagem 2.

 

Listagem 2. Resultado intermediário para a consulta do exemplo 1.

PLAYERNO  SUM(AMOUNT)

--------  -----------

       6       100.00

       8        25.00

      27       175.00

      44       130.00

     104        50.00

       ?       480.00

 

Explicação: As linhas neste resultado intermediário, no qual a coluna PLAYERNO é preenchida, formam o resultado do primeiro bloco select. As linhas nas quais PLAYERNO é igual a NULL compõem o resultado do segundo bloco select. As primeiras cinco linhas contêm informações sobre o nível de agregação dos números dos jogadores e a última linha, contém dados sobre o nível de agregação de todas as linhas.

A especificação WITH ROLLUP foi introduzida para simplificar este tipo de relatório. WITH ROLLUP pode ser usado para requerer múltiplos agrupamentos com uma única cláusula de GROUP BY. Neste caso, podemos obter o mesmo resultado com a consulta:

 

"



ATENÇÃO! A exibição deste artigo foi interrompida.


  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da SQL Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!






    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!



Publicidade
Autor
Equipe Devmedia

Noticias/Dicas/Artigos publicados.




Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03