Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

¿Hay forma de contar números de fin de semana y operaciones de fecha en consultas?

Estas en el tema de ¿Hay forma de contar números de fin de semana y operaciones de fecha en consultas? en el foro de Oracle en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 20/02/2008, 03:55
 
Fecha de Ingreso: abril-2007
Mensajes: 160
Antigüedad: 17 años
Puntos: 1
¿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?
  #2 (permalink)  
Antiguo 20/02/2008, 07:30
 
Fecha de Ingreso: noviembre-2007
Ubicación: Argentina
Mensajes: 134
Antigüedad: 16 años, 5 meses
Puntos: 3
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.
  #3 (permalink)  
Antiguo 21/02/2008, 11:37
 
Fecha de Ingreso: abril-2007
Mensajes: 160
Antigüedad: 17 años
Puntos: 1
Re: ¿Hay forma de contar números de fin de semana y operaciones de fecha en consultas

(Repetido)
  #4 (permalink)  
Antiguo 21/02/2008, 11:39
 
Fecha de Ingreso: abril-2007
Mensajes: 160
Antigüedad: 17 años
Puntos: 1
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
  #5 (permalink)  
Antiguo 22/02/2008, 08:24
 
Fecha de Ingreso: noviembre-2007
Ubicación: Argentina
Mensajes: 134
Antigüedad: 16 años, 5 meses
Puntos: 3
Re: ¿Hay forma de contar números de fin de semana y operaciones de fecha en consultas

Cita:
Iniciado por programadornet Ver Mensaje
Así:

...contar el número de días de fin de semana.
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:
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;
Y nuestro select, cuenta la cantidad de fines de semana desde una fecha determinada hasta hoy.

Código:
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;
Espero que esto te ayude, cualquier cambio lo hacemos en base a este conjunto de datos.

Saludos, Mario.

Última edición por MarioHeredia; 22/02/2008 a las 08:25 Razón: Se trabajo con PL/SQL 7
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:40.