Hola gracias la solución es interval. Los pedidos tienen un intervalo de entrega de dos horas como mínimo, con esto se considera entregado en buen servicio un cuarto de hora antes y otro después de los extremos del intervalo. Importa porque los repartidores tienen pluses económicos por buen servicio. Hay clientes que igual que se quejan porque un pedido llegue un poco tarde también los hay que se quejan porque lo reciben antes de lo esperado. Aquí en España la gente es así de exigente con el servicio a domicilio. Saludos
________________________________ De: Alvaro Herrera <[email protected]> Para: FRANCISCO JOSE PALAO VILLANUEVA <[email protected]> CC: "[email protected]" <[email protected]> Enviado: Viernes 4 de abril de 2014 21:30 Asunto: Re: [pgsql-es-ayuda] Ayuda con horas 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
