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 71 - PostgreSQL Window Functions

Recursos implementados na versão 8.4






PostgreSQL
PostgreSQL Window Functions
Recursos implementados na versão 8.4


 De que trata o artigo?
Visão geral dos recursos para a realização de consultas com Window Functions implementados na versão 8.4 do banco de dados PostgreSQL, do seu funcionamento e das formas como esta funcionalidade pode ser utilizada em aplicações de banco de dados, com exemplos e considerações práticas.

Para que serve?
Fornecer uma visão geral para subsidiar a construção de consultas envolvendo as novas Window Functions implementadas no PostgreSQL, poupando esforço na construção de rotinas de ranqueamento e classificação e obtendo ganhos de desempenho. Tal visão engloba o conceito de partição (window) de dados, essencial para o entendimento das possibilidades de agrupamento dos dados nas consultas.

Em que situação o tema é útil?
O tema é obrigatório quando tratamos de consultas onde sejam necessários ranqueamentos e ordenações de registros em geral, de qualquer grau de sofisticação, com qualquer tipo de particionamento dos dados, feitas no PostgreSQL. Relatórios em que se deseje fazer o destaque de primeiros/últimos registros em alguma partição também se beneficiam desta nova funcionalidade.


Window Functions (WFs) são um recurso ainda pouco conhecido e implementado em bancos de dados livres. Window Functions são formas de consultar dados que complementam as tradicionais funções de agregação do SQL: SUM, COUNT, AVG, MAX e MIN, possibilitando novas formas de acesso a um menor custo computacional e com uma sintaxe mais apropriada.
Em linhas gerais, uma window function atua de forma similar a uma função de agregação tradicional, que computa uma série de registros com base em uma condição que os agrupa. No entanto, ao invés de retornar os dados em uma linha, como em um somatório por exemplo, uma WF retorna os resultados calculados sem reduzir o número de registros apresentados ao usuário.
Os conjuntos de registros que se deseja agregar são chamados windows (janelas), ou partições, daí a denominação window functions para estas funcionalidades de consulta. Por exemplo, podemos criar uma partição pelo campo cidade, dividindo os registros em partições criadas para cada localidade.
As operações realizadas pelas WFs estão relacionadas a operações de numeração de registros (ROW_NUMBER()), classificação e ranqueamento (RANK(), DENSE_RANK(), PERCENT_RANK()), criação de subdivisões de uma partição (NTILE(), LAG() e LEAD()), recuperação de primeiro, último ou enésimo registro de uma window (FIRST_VALUE(), LAST_VALUE(), NTH_VALUE()) e medida de distância ou posição relativa em relação ao início de uma partição para cada registro (CUME_DIST()), de acordo com a sua window. Como exemplos de window, falando em um sistema de controle de impostos estadual, podemos pensar na criação partições pelo campo cidade e ordenação dos seus registros pelo valor dos impostos devidos, resultando em um relatório gerencial. Em uma aplicação que automatiza processos de seleção, podemos pensar em um indicador que diga o quão longe está cada indivíduo da primeira posição, usando uma medida de distância relativa.
Em suma, o conceito de wf engloba funções que solucionam problemas que envolvem consultas a registros de partições de dados com base em algum critério, tais como:
•    Quais são os primeiros colocados em determinado processo de seleção?
•    Quem tirou as piores notas?
•    Quanto falta para atingir determinada posição em um ranking?"


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
Cláudio Bezerra Leopoldino

Colunista do site planeta PostgreSQL BR (http://planeta.postgresql.org.br/) e mantenedor do site “Meu Blog de PostgreSQL” (http://postgresqlbr.blogspot.com/). Mestre em Administração pela Universidade Federal do Rio Grande do Sul (UFRGS), Especialista em Banco de Dados pela Universidade Estadual do ...


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