From: | Alvaro Herrera <alvherre(at)2ndquadrant(dot)com> |
---|---|
To: | FRANCISCO JOSE PALAO VILLANUEVA <fjpv_2000(at)yahoo(dot)es> |
Cc: | "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Ayuda con horas |
Date: | 2014-04-04 19:30:15 |
Message-ID: | 20140404193015.GC5822@eldon.alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
FRANCISCO JOSE PALAO VILLANUEVA escribió:
> Hola,
> soy novato con las funciones de postgresql y necesito su ayuda, dentro de una query he de contar los pedidos entregados correctamente en su franja horaria de entrega con un margen de 15 minutos antes y después, en fin les expreso en pseudocódigo lo que necesito:
>
> sum(case when (hora1entrega-15 minutos <= hora_entrega_real and hora2entrega+15minutos >= hora_entrega_real ) then 1 else 0 end) as entregaok
Creo que lo más simple es que uses BETWEEN:
CASE WHEN
hora_entrega_real BETWEEN
hora1entrega - interval '15 min' AND
hora2entrega + interval '15 min'
THEN 1 ELSE 0 END
Ojo con los NULL.
La otra opción sería usar un tipo de dato de rango; para este único caso
puede ser excesivo (tanques antimoscas y todo eso).
Otrosí: ¿qué importa si un pedido se entrega 20 minutos antes de lo
presupuestado?
--
Álvaro Herrera http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda
From | Date | Subject | |
---|---|---|---|
Next Message | Gilberto Castillo | 2014-04-04 20:19:23 | Re: Ayuda con horas |
Previous Message | FRANCISCO JOSE PALAO VILLANUEVA | 2014-04-04 19:27:25 | Re: Ayuda con horas |