MySQL - ayuda con consulta sql compleja

   
Vista:

ayuda con consulta sql compleja

Publicado por clopez (1 intervención) el 22/07/2008 02:44:53
Hola tengo el siguiente problema a ver si me ayudan con ideas.

Tengo una tabla que almacena eventos con la fecha de ocurrencia (año,mes,dia, hora,min, seg), además estos eventos tienen diferentes categorías (A,B,C,D,E,F, etc.). La estructura de la tabla podría ser (esto es una simplificación del problema real) :

Eventos:
id_evento
fecha_evento
categoria_evento

Ahora bien, necesito retornar una tabla que contenga la cantidad de eventos de las diferentes categorias en intervalos de fechas ( dia, mes, año,etc) entre dos fechas. Por ejemplo intervalos de a un mes entre el 2007 y 2008. Esto seria Enero-Febrero, Febrero-Marzo, Marzo-Abril.... Diciembre-Enero.

Una idea de la tabla seria

Enero-Febrero Febrero-Marzo Marzo-Abril .... Diciembre-Enero
A 20 21 30 12
B 46 14 ...
C 23 17
D 0 16 ...
...

En estos momentos estoy realizando una consulta por cada celda, es decir, hago count de los eventos que estan entre enero y febrero cuya categoria es A. El problema es que la tabla esta densamente poblada por lo que completar todas las celdas toma varios segundos.

Existe alguna forma de generar la tabla con sql directamente? o disminuir al minimo posible la cantidad de consultas?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ayuda con consulta sql compleja

Publicado por ery (69 intervenciones) el 22/07/2008 18:23:43
algo como esto

select count(*) as cant, month(fecha_evento) as mes, categoria_evento from eventos
where fecha_evento between '2008-01-01' and '2008-12-31'
group by month(fecha_evento), categoria_evento
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar