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
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 |