Re: [pgsql-es-ayuda] Select con agregacion por períodos

From: raul andrez gutierrez alejo <raulandrez(at)gmail(dot)com>
To: Ruben Fitó <r(dot)fito(at)ubiquat(dot)com>
Cc: "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: [pgsql-es-ayuda] Select con agregacion por períodos
Date: 2015-10-13 14:33:14
Message-ID: CAHQFj71XrT_RQBTk-055+jCVjj5xoTiTBuSiU=adWQ5AZz-HwA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola Ruben.

si no necesita los datos en tiempo real, puede utilizar 3 vistas
materializadas, cada una agrupada por dia to_char(fecha,''YYYY-MM-DD')
,semana to_char(fecha,''YYYY-WW') o to_char(fecha,''YYYY-MM-W') y mes
to_char(fecha,''YYYY-MM'), las vistas las puede actualizar con un cron cada
madrugada o cada intervalo de tiempo de decida, así logra un buen
rendimiento.

http://www.postgresql.org/docs/9.4/static/functions-formatting.html

El 13 de octubre de 2015, 9:21, Anthony Sotolongo <asotolongo(at)gmail(dot)com>
escribió:

> Hola Ruben
>
> El 13/10/15 a las 10:55, Ruben Fitó escribió:
>
> Hola Lista,
>
>
> Tengo una duda a ver si me la podrían resolver.
>
> Tenemos una tabla bastante grande, donde almacenamos ventas.
>
> En esta tabla tenemos los campos *fecha*(timestamp), *importe* y *cliente*,
> entre otras pero que no son importantes.
>
> *fecha | importe | cliente*
>
> Lo que necesitamos son los (max, avg, min) de importe y número de ventas
> agrupado por cliente, día, semana y mes, mirando desde ahora hasta un año
> atrás, sin tener en cuenta el periodo más cercano.
>
> No se si entendi mal o no te explicaste correctamente, lo que entiendo es
> algo como esto:
>
> *select extract (MONTH..),extract (week..),extract (* *DAY..),cliente,max,avg,min
> from tabla where current_date-**fecha<=365** group by 1,2,3,4*
>
> pero de seguro no es tan sencillo, jeje
>
> puedes poner un juego de datos y la salida que esperas?
>
> Saludos
>
> Dicho de otro modo, necesitamos por cada día, semana y mes el (max, avg,
> min) de importe por cada cliente sin tener en cuenta el mes actual(para
> mes), el día actual(para día) o la semana actual(para semana).
>
> Hemos realizado una gigantesca query con sub-consultas que no se entiende
> nada, y el costo temporal es demasiado elevado. Creo que no es conveniente
> mostrarla ya que os dará más dolor de cabeza que otra cosa.
>
> No sabemos qué puede ser más óptimo, usar with con subconsultas, usar
> PARTITION, u otras alternativas que no hemos pensado.
>
> Nos da igual si nos retorna una tabla o arrays , o tabla de arrays,
> jejeje, simplemente que se pueda trabajar fácilmente para poder hacer
> comparaciones y poder discriminar con algún parámetro.
>
> Gracias de antemano.
>
>
>
> --
> *Ruben Fitó *
> Software Engineer
>
> r(dot)fito(at)ubiquat(dot)com <j(dot)catarineu(at)ubiquat(dot)com>
> www.ubiquat.com
> Tota la informació continguda en aquest document i arxius adjunts és
> CONFIDENCIAL protegida per llei de secret comercial. Si l'ha rebut per
> error, si us plau elimini'l i posi's en contacte amb l'emissor.
>
> All information contained in this document and any attachments are
> CONFIDENTIAL and protected under trade secret laws. If you receive this
> message by mistake, please delete it and notify it immediately to the
> sender.
>
>
>

--
Raul Andres Gutierrez Alejo

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Gustavo Borchez 2015-10-13 14:39:32 Re: Auditoría y evaluación
Previous Message Anthony Sotolongo 2015-10-13 14:21:12 Re: Select con agregacion por períodos