Trabalhando com funções de agregação em SQL – Parte 2
Neste artigo serão abordadas algumas funções de agregação presentes na SQL para a extração deste tipo de informação. A correta utilização destas funções auxilia na tomada de decisão mais acertada.
Recursos especiais neste artigo:
Artigo no estilo Curso Online.
Armazenar informações em Sistemas de Gerenciamento de Banco de Dados já, há muito tempo, passou a ser parte integrante de todas as empresas. Mas a maneira com a qual as empresas utilizam estes dados armazenados é que passa a ser um diferencial competitivo.
Para conseguir o benefício de utilizar os dados armazenados de maneira inteligente, a SQL oferece uma gama de funções que permitem a geração de relatórios com dados consolidados ou sumarizados e também a extração de dados estatísticos com base nas informações armazenadas.
Neste segundo artigo desta série, serão abordadas algumas funções de agregação presentes na SQL para a extração deste tipo de informação. A correta utilização destas funções, além de auxiliar em uma tomada de decisão mais acertada, permite a manutenção de um bom desempenho do SGBDR.
Em
que situação o tema é útil
Em diversos momentos no ciclo de
vida de um banco de dados pode ser necessário extrair dados de forma a criar
relatórios com informações sumarizadas ou com dados estatísticos para auxiliar
na tomada de decisão de negócios. Para este tipo de consulta é que o tema deste
artigo se mostra de grande utilidade.
No primeiro artigo desta série abordamos as seguintes funções de agregação:
· AVG e SUM;
· CORR;
· COUNT;
· COUNT(*);
· COVAR_POP;
· COVAR_SAMP;
· CUME_DIST.
Porém, como mostramos no artigo anterior, a lista de funções de agregação não é pequena. Neste artigo continuaremos apresentando as outra funções de agregação através de exemplos práticos que podemos utilizar no dia-a-dia de sua aplicação.
As funções de agregação abordadas neste artigo são:
· DENSE_RANK;
· MIN e MAX;
· PERCENT_RANK;
· PERCENTILE_CONT;
· PERCENTILE_DISC;
· RANK;
· Família REGR;
· STDDEV_POP;
· STDDEV_SAMP;
· VAR_POP;
· VAR_SAMP.
Vejamos a partir de agora, através de exemplos, cada uma dessas funções de agregação. A sintaxe geral de utilização de funções de agregação é:
função_de_agregação( [ ALL | DISTINCT ] expressão)
É muito importante salientar que todas as funções de agregação, exceto a função COUNT(*), irão desconsiderar colunas com o valor NULL ao calcular o resultado.
A função DENSE_RANK
A função DENSE_RANK calcula uma classificação em um grupo para uma linha hipotética fornecida. Ranqueamentos nunca são ignorados, mesmo quando um grupo contém linhas que sejam classificados de forma idêntica.
A sintaxe do padrão ANSI SQL é:
DENSE_RANK(lista_de_valores) WITHIN GROUP (ORDER BY lista_de_ordenação)
lista_de_valores = expressão [,expressão...]
lista_de_ordenação = item_de_ordenação [,item_de_ordenação...]
item_de_ordenação = expressão [ASC|DESC] [NULLS FIRST|NULLS LAST].
O SGBDR Oracle suporta totalmente esta sintaxe padrão ANSI SQL.
Os SGBDRs DB2, MySQL, PostgreSQL e SQL Server não suportam esta sintaxe, no entanto, o DB2 suporta o DENSE_RANK como uma função analítica.
A Listagem 1 apresenta um exemplo da utilização da função de agregação DENSE_RANK.
Listagem 1. Exemplo de utilização da função de agregação DENSE_RANK.
01. SQL> SELECT AMOUNT_SOLD, DENSE_RANK(4, 33.52) WITHIN
GROUP (ORDER BY CHANNEL_ID, AMOUNT_SOLD) AS DENSE_RANK
02. 2 FROM SALES
03. 3 WHERE PROD_ID=136
04. 4 GROUP BY AMOUNT_SOLD;
05.
06. AMOUNT_SOLD DENSE_RANK
07. ----------- ----------
08. 30,87 2
09. 33,52 2
10. 36,58 3
11. 36,71 2
12. 37,1 3
13. 42,15 2
14. 46,19 3
15. 46,35 2
16. 46,84 3
17.
18. 9 rows selected.
19.
20. Elapsed: 00:00:00.01"
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo