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

group by por periodos

Estas en el tema de group by por periodos en el foro de Oracle en Foros del Web. Tengo una tabla con los días que una persona ha usado un coche Persona| Fecha de inicio de uso| Fecha de fin de uso Otra ...
  #1 (permalink)  
Antiguo 10/09/2009, 16:10
 
Fecha de Ingreso: septiembre-2009
Mensajes: 3
Antigüedad: 15 años, 3 meses
Puntos: 0
group by por periodos

Tengo una tabla con los días que una persona ha usado un coche
Persona| Fecha de inicio de uso| Fecha de fin de uso
Otra con el precio del uso del coche divida en periodos
Fecha de inicio de periodo| Fecha de fin de periodo| Tipo de precio| precio

Me gustaría poder hacer un desglose, por persona, por mes y dentro del mes por los diferentes tipos de precios.
Mes1| días de uso | tipo de precio
Mes1| días de uso | tipo de precio
Mes2| días de uso | tipo de precio
Mes3| días de uso | tipo de precio
Hasta ahora solo he conseguido hacer un desglose por Mes (GROUP BY TO_CHAR(FECHA)), pero si en un mes se produce un cambio de tipo me gustaría refregarlo repitiendo el mes y cambiando el tipo de precio, desglosando los días de uso de un periodo y los del otro dentro del mismo mes.
¿Alguien sabe cómo hacer un doble desdoble? Llevo horas intentándolo y no lo he conseguido.
Muchas gracias
  #2 (permalink)  
Antiguo 11/09/2009, 06:49
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: group by por periodos

GROUP BY TO_CHAR(FECHA),tipo;
???

Hablas bien de tu problema, pero no pones lo que has intentado por horas hacer. trata de poner un ejemplo claro y concreto de lo que quieres con los datos que quieres.

saludos jueves
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 11/09/2009, 10:52
 
Fecha de Ingreso: septiembre-2009
Mensajes: 3
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: group by por periodos

Hola bones,
Lo que quiero obtener es los usos que hizo una persona de un auto por mes, para calcular lo que tiene que pagar.

Y he llegado a eso, a lo facil, agrupar los usos por mes,

SELECT count(idPersona), TO_CHAR(FECHA)
FROM Reservas
GROUP BY GROUP BY TO_CHAR(FECHA);


El asunto es que dependiendo del periodo de tarificación tiene un precio u otro, La información de periodos está en la tabla PreciosPeriodo, definida por fecha de inicio y fin de periodo y precio.
Mi poblema es obtener el mismo desglose que arriba, pero si un mes se produce un cambio de precio, reflejarlo como dos filas.

Lo he intentado con subconsultas y también haciendo joins, pero al hacer el group by mes ya no puedo obtener otro registro con ese mes y si hago el group by precioPeriodo peor todavía.
  #4 (permalink)  
Antiguo 11/09/2009, 12:06
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: group by por periodos

que campo comparten las tablas?
se relacionan mediante que campo?
Pon la estructura total de las tablas comprometidas.

La idea es utilizar inner join para unirlas y agrupar también por tipo precio.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 12/09/2009, 10:43
 
Fecha de Ingreso: septiembre-2009
Mensajes: 3
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: group by por periodos

Hola Huesos!
MUCHAS GRACIAS!!, no lo he podido probar en oracle porque no estoy en el trabajo, pero en casa lo he probado en un access y funciona perfecto:

SELECT Month([USOS]![Fini]) AS Mes, PreciosPeriodo.TipoPrecio, Count(USOS.persona) AS Reservas, Year([USOS]![Fini]) AS AnYO
FROM USOS, PreciosPeriodo
WHERE (((USOS.Fini)>=[PreciosPeriodo].[Finiper] And (USOS.Fini)<=[PreciosPeriodo].[Ffinper]))
GROUP BY Month([USOS]![Fini]), PreciosPeriodo.TipoPrecio, Year([USOS]![Fini]);


Voy a cambiar las tablas, porque antes tenía los usos definidos por periodos, pero eso complica mucho la consulta para calcular el precio total, así que ahora almaceno los días que usa.
Muchas gracias
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 16:09.