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 ([email protected])
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a