| |||
¿Hay forma de contar números de fin de semana y operaciones de fecha en consultas? En PL-SQL ya sé hacerlo yo, creando un script. ¿Pero se puede en una simple select, contar por ejemplo el número de fines de semana (o de miércoles, ya puestos) en un intervalo entre dos fechas? |
| |||
Re: ¿Hay forma de contar números de fin de semana y operaciones de fecha en consultas Si, se puede perfectamente en un solo select, pero no me das mas datos para armarte uno. Desde que dia de la semana comenzarias a contar para atras? Que necesitas? Cantidad de Semanas enteras (de 7 dias) o cantidad de miercoles? Saludos. |
| |||
Re: ¿Hay forma de contar números de fin de semana y operaciones de fecha en consultas Así: desde un día concreto, por ejemplo 10/1/2008 (o que este valor se tome de otra tabla, que sólo tenga un registro con un campo que sea esa fecha. Aunque este detalle es fácil) hasta el día actual (sysdate), contar el número de días de fin de semana. Gracias por responder |
| |||
Re: ¿Hay forma de contar números de fin de semana y operaciones de fecha en consultas Ok, todavia no me quedo muy claro que quieres decir con la leyenda que cito, pero vamos a hacer el intento. Supongamos una situacion... Un grupo de Ingenieros estan en el Congo Belga hace ya mucho tiempo y estan soportando temperaturas muy bajas, entonces los muchachos quieren saber hace cuantas semanas que se estan muriendo de frio. Ok, preparemos los datos.
Código:
Y nuestro select, cuenta la cantidad de fines de semana desde una fecha determinada hasta hoy.DROP TABLE PROGRAM_NET PURGE; CREATE TABLE PROGRAM_NET ( FECHA DATE, CODIGO_CIUDAD VARCHAR2(15), TEMPERATURA NUMBER ) TABLESPACE AUXILIAR PCTFREE 5 PCTUSED 95; INSERT INTO PROGRAM_NET VALUES (TO_DATE('01.01.2008','DD.MM.YYYY'), 'Congo Belga', 3.39); INSERT INTO PROGRAM_NET VALUES (TO_DATE('02.01.2008','DD.MM.YYYY'), 'Congo Belga', 11.01); INSERT INTO PROGRAM_NET VALUES (TO_DATE('03.01.2008','DD.MM.YYYY'), 'Congo Belga', 11.67); INSERT INTO PROGRAM_NET VALUES (TO_DATE('04.01.2008','DD.MM.YYYY'), 'Congo Belga', 13.22); INSERT INTO PROGRAM_NET VALUES (TO_DATE('05.01.2008','DD.MM.YYYY'), 'Congo Belga', 6.73); INSERT INTO PROGRAM_NET VALUES (TO_DATE('06.01.2008','DD.MM.YYYY'), 'Congo Belga', 5.33); INSERT INTO PROGRAM_NET VALUES (TO_DATE('07.01.2008','DD.MM.YYYY'), 'Congo Belga', 11.08); INSERT INTO PROGRAM_NET VALUES (TO_DATE('08.01.2008','DD.MM.YYYY'), 'Congo Belga', 11.2); INSERT INTO PROGRAM_NET VALUES (TO_DATE('09.01.2008','DD.MM.YYYY'), 'Congo Belga', 10.67); INSERT INTO PROGRAM_NET VALUES (TO_DATE('10.01.2008','DD.MM.YYYY'), 'Congo Belga', 11.2); INSERT INTO PROGRAM_NET VALUES (TO_DATE('11.01.2008','DD.MM.YYYY'), 'Congo Belga', 1.18); INSERT INTO PROGRAM_NET VALUES (TO_DATE('12.01.2008','DD.MM.YYYY'), 'Congo Belga', 0); INSERT INTO PROGRAM_NET VALUES (TO_DATE('13.01.2008','DD.MM.YYYY'), 'Congo Belga', 0); INSERT INTO PROGRAM_NET VALUES (TO_DATE('14.01.2008','DD.MM.YYYY'), 'Congo Belga', 6.64); INSERT INTO PROGRAM_NET VALUES (TO_DATE('15.01.2008','DD.MM.YYYY'), 'Congo Belga', 11.96); INSERT INTO PROGRAM_NET VALUES (TO_DATE('16.01.2008','DD.MM.YYYY'), 'Congo Belga', .02); INSERT INTO PROGRAM_NET VALUES (TO_DATE('17.01.2008','DD.MM.YYYY'), 'Congo Belga', 4.73); INSERT INTO PROGRAM_NET VALUES (TO_DATE('18.01.2008','DD.MM.YYYY'), 'Congo Belga', 11.07); INSERT INTO PROGRAM_NET VALUES (TO_DATE('19.01.2008','DD.MM.YYYY'), 'Congo Belga', 6.19); INSERT INTO PROGRAM_NET VALUES (TO_DATE('20.01.2008','DD.MM.YYYY'), 'Congo Belga', 5.01); INSERT INTO PROGRAM_NET VALUES (TO_DATE('21.01.2008','DD.MM.YYYY'), 'Congo Belga', 8.98); INSERT INTO PROGRAM_NET VALUES (TO_DATE('22.01.2008','DD.MM.YYYY'), 'Congo Belga', 8.67); INSERT INTO PROGRAM_NET VALUES (TO_DATE('23.01.2008','DD.MM.YYYY'), 'Congo Belga', 9.06); INSERT INTO PROGRAM_NET VALUES (TO_DATE('24.01.2008','DD.MM.YYYY'), 'Congo Belga', 9); INSERT INTO PROGRAM_NET VALUES (TO_DATE('25.01.2008','DD.MM.YYYY'), 'Congo Belga', 9.95); INSERT INTO PROGRAM_NET VALUES (TO_DATE('26.01.2008','DD.MM.YYYY'), 'Congo Belga', 6.25); INSERT INTO PROGRAM_NET VALUES (TO_DATE('27.01.2008','DD.MM.YYYY'), 'Congo Belga', 4.96); INSERT INTO PROGRAM_NET VALUES (TO_DATE('28.01.2008','DD.MM.YYYY'), 'Congo Belga', 9.02); INSERT INTO PROGRAM_NET VALUES (TO_DATE('29.01.2008','DD.MM.YYYY'), 'Congo Belga', 8.96); INSERT INTO PROGRAM_NET VALUES (TO_DATE('30.01.2008','DD.MM.YYYY'), 'Congo Belga', 9.66); INSERT INTO PROGRAM_NET VALUES (TO_DATE('31.01.2008','DD.MM.YYYY'), 'Congo Belga', 10.32); INSERT INTO PROGRAM_NET VALUES (TO_DATE('01.02.2008','DD.MM.YYYY'), 'Congo Belga', 12.83); INSERT INTO PROGRAM_NET VALUES (TO_DATE('02.02.2008','DD.MM.YYYY'), 'Congo Belga', 7.17); INSERT INTO PROGRAM_NET VALUES (TO_DATE('03.02.2008','DD.MM.YYYY'), 'Congo Belga', 5.03); INSERT INTO PROGRAM_NET VALUES (TO_DATE('04.02.2008','DD.MM.YYYY'), 'Congo Belga', 10.5); INSERT INTO PROGRAM_NET VALUES (TO_DATE('05.02.2008','DD.MM.YYYY'), 'Congo Belga', 9.88); INSERT INTO PROGRAM_NET VALUES (TO_DATE('06.02.2008','DD.MM.YYYY'), 'Congo Belga', 9.81); INSERT INTO PROGRAM_NET VALUES (TO_DATE('07.02.2008','DD.MM.YYYY'), 'Congo Belga', 10.72); INSERT INTO PROGRAM_NET VALUES (TO_DATE('08.02.2008','DD.MM.YYYY'), 'Congo Belga', 15.7); INSERT INTO PROGRAM_NET VALUES (TO_DATE('09.02.2008','DD.MM.YYYY'), 'Congo Belga', 6.93); INSERT INTO PROGRAM_NET VALUES (TO_DATE('10.02.2008','DD.MM.YYYY'), 'Congo Belga', 5.29); INSERT INTO PROGRAM_NET VALUES (TO_DATE('11.02.2008','DD.MM.YYYY'), 'Congo Belga', 10.08); INSERT INTO PROGRAM_NET VALUES (TO_DATE('12.02.2008','DD.MM.YYYY'), 'Congo Belga', 9.71); INSERT INTO PROGRAM_NET VALUES (TO_DATE('13.02.2008','DD.MM.YYYY'), 'Congo Belga', 9.84); INSERT INTO PROGRAM_NET VALUES (TO_DATE('14.02.2008','DD.MM.YYYY'), 'Congo Belga', 10.1); INSERT INTO PROGRAM_NET VALUES (TO_DATE('15.02.2008','DD.MM.YYYY'), 'Congo Belga', 13.03); INSERT INTO PROGRAM_NET VALUES (TO_DATE('16.02.2008','DD.MM.YYYY'), 'Congo Belga', 7.07); INSERT INTO PROGRAM_NET VALUES (TO_DATE('17.02.2008','DD.MM.YYYY'), 'Congo Belga', 5.01); INSERT INTO PROGRAM_NET VALUES (TO_DATE('18.02.2008','DD.MM.YYYY'), 'Congo Belga', 9.98); INSERT INTO PROGRAM_NET VALUES (TO_DATE('19.02.2008','DD.MM.YYYY'), 'Congo Belga', 9.9); INSERT INTO PROGRAM_NET VALUES (TO_DATE('20.02.2008','DD.MM.YYYY'), 'Congo Belga', 9.73); INSERT INTO PROGRAM_NET VALUES (TO_DATE('21.02.2008','DD.MM.YYYY'), 'Congo Belga', 10.54); COMMIT; DROP TABLE FECHA_PROGRAM_NET PURGE; CREATE TABLE FECHA_PROGRAM_NET TABLESPACE AUXILIAR PCTFREE 5 PCTUSED 95 AS SELECT TO_DATE('&1','DD.MM.YYYY') FECHA FROM DUAL;
Código:
Espero que esto te ayude, cualquier cambio lo hacemos en base a este conjunto de datos.SELECT SUM(FIN_DE_SEMANA) FINES_DE_SEMANAS, CODIGO_CIUDAD, ROUND(AVG(TEMPERATURA), 2) TEMPERATURA_PROMEDIO FROM ( SELECT FECHA, DECODE(FECHA, TRUNC(FECHA,'DAY'), 1, 0) FIN_DE_SEMANA, CODIGO_CIUDAD, TEMPERATURA FROM PROGRAM_NET ) A, FECHA_PROGRAM_NET F WHERE A.FECHA > F.FECHA GROUP BY CODIGO_CIUDAD; Saludos, Mario. Última edición por MarioHeredia; 22/02/2008 a las 08:25 Razón: Se trabajo con PL/SQL 7 |