https://cajondesastreoracle.wordpress.com/2010/02/08/vistas-materializadas/

Mira esto, ignoro si en postgresql existe una vista materializada log, de no existir, un crontab con lo que necesitas debiera servir.

PS: Me imagino que esto es para una base de datos tipo DW, no una OLTP o me equivoco ?

On 10/14/2015 3:33 AM, raul andrez gutierrez alejo wrote:
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 <asotolo...@gmail.com
<mailto:asotolo...@gmail.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.f...@ubiquat.com <mailto:j.catari...@ubiquat.com>
        www.ubiquat.com <http://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

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Reply via email to