Nesta 4º e última parte da série, falarei sobre as seguintes funções analíticas:

  • SUM
  • VAR_POP
  • VARIANCE

1) SUM

Retorna a soma de valores de determinada coluna. Esta, na minha opinião, é uma das funções mais úteis e usadas por DBAs e desenvolvedores. Pode ser usada como função agragada e analítica.

 
 -- exemplo do SUM como função agregada
 -- abaixo eu estou calculando o tamanho dos objetos do banco
 -- de dados, agrupando por owner
 SELECT OWNER, 
 SUM(BYTES)/1024/1024 AS TOTAL_MBS
 FROM DBA_SEGMENTS 
 GROUP BY OWNER
 ORDER BY 2 DESC

 -- exemplo do SUM como função analítica
 -- abaixo estou para cada tipo de segmento, o tamanho cumulativo
 -- de cada objeto daquele segmento
 SELECT SEGMENT_TYPE,
 SEGMENT_NAME,
 BYTES/1024/1024 AS TAMANHO_MBS,
 SUM(BYTES/1024/1024) OVER (PARTITION BY SEGMENT_TYPE ORDER BY BYTES RANGE UNBOUNDED PRECEDING)
 FROM DBA_SEGMENTS

2) VAR_POP

Retorna a variância da população para um conjunto de números, após descartar os valores NULL. Pode ser usada tanto como função agregada, quanto como função analítica.

 -- exemplo de uso do VAR_POP como função agregada.
 -- retorna a variância da população dos tamanhos dos segmentos
 -- cujo owner é o sys

 SELECT VAR_POP(BYTES) 
 FROM DBA_SEGMENTS
 WHERE OWNER = 'SYS'

 -- exemplo de uso do VAR_POP como função analítica
 -- calcula a população cumulativa, agrupadas pela data 
 -- da última coleta de estatísticas da tabela

 SELECT TO_CHAR(LAST_ANALYZED, 'MM/YYYY'),
 COUNT(TABLE_NAME),
 VAR_POP (SUM(NUM_ROWS)) 
    OVER (ORDER BY TO_CHAR(LAST_ANALYZED, 'MM/YYYY')) "VAR POP"
 FROM DBA_TABLES
 WHERE OWNER = 'CERTIFICACAO'
 GROUP BY TO_CHAR(LAST_ANALYZED, 'MM/YYYY')

3) VARIANCE

Retorna a variância de determinado conjunto de valores. Pode ser usada tanto como função analítica, quanto como função agregada Por variância entende-se:

“[…]é uma medida da sua dispersão estatística, indicando quão longe em geral os seus valores se encontram do valor esperado.[…]
fonte: Wikipedia”

 
 -- exemplo de uso do VARIANCE como função agregada
 SELECT VARIANCE(BYTES/1024/1024)
 FROM DBA_SEGMENTS

 -- exemplo de uso do VARIANCE como função analítica
 SELECT SG.OWNER,
 SG.SEGMENT_NAME,
 SG.SEGMENT_TYPE,
 VARIANCE (SG.BYTES/1024/1024) 
     OVER (ORDER BY DO.CREATED) AS VARIANCIA
 FROM DBA_SEGMENTS SG JOIN DBA_OBJECTS DO 
     ON (SG.segment_name = DO.OBJECT_NAME)
 WHERE SG.SEGMENT_TYPE = 'INDEX'
 AND SG.OWNER = 'CERTIFICACAO'

Bom, então é isso. Essa série te posts termina aqui. Muito em breve teremos mais sequências de posts sobre os mais variados assuntos relacionados a bancos de dados. Até mais. Keep Querying.