Postgres – LPAD AVG Date_Part e Cast

26 11 2008

O Problema

Com base em uma tabela meu cliente necessitava extrair um relatório com as notas médias mensais que ele estava recebendo dos seus clientes.

A Solução

SELECT
      date_part('year',timestamp) || ' - ' || lpad(cast(date_part('month',timestamp) as text),2,'0') as mes_agrupado,
      round(cast(AVG(nota) as numeric), 2) as nota_media,
      count(1)
FROM t1
GROUP BY mes_agrupado
ORDER BY mes_agrupado ASC

Conclusão

  • data_part: extrai de uma coluna timestamp pode ser ‘day’ ‘month’ ou ‘year’
  • lpad: preenche uma string até um determinado tamanho com outra string
  • cast: converte dados entre diversos tipos
  • avg: média de uma determinada coluna É importante observar aqui que o GROUP BY mes_agrupado é fundamental pois é dessa forma que a média será realizada sobre o total das notas dadas pelos clientes.
  • round: arredonda valores numéricos, por exemplo 2.545454 para 2.55

Observe sempre os tipos de dados que cada função pode receber senão estará sujeito a vários tipos de erros estranhos!

Referência

http://www.postgresql.org/docs/8.2/static/functions-string.html

Anúncios

Ações

Information

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s




%d blogueiros gostam disto: