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

[SOLUCIONADO] agrupar por quarter

Estas en el tema de agrupar por quarter en el foro de Mysql en Foros del Web. Hola a todos, En una query estoy agrupando por querter: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original GROUP BY QUARTER ( Fecha_registro ) el caso es ...
  #1 (permalink)  
Antiguo 29/11/2013, 08:19
 
Fecha de Ingreso: marzo-2013
Mensajes: 83
Antigüedad: 11 años, 1 mes
Puntos: 0
agrupar por quarter

Hola a todos,

En una query estoy agrupando por querter:

Código MySQL:
Ver original
  1. GROUP BY QUARTER(Fecha_registro)

el caso es que me sería muy útil que aquellos quarter que no tuvieran elementos me lo marcara con un 0 en vez de no ponerlo ya que utilizaría el vector tal cual sin tener que tratarlo ya que me sabría el orden de llegada, en caso de saltarse quarter tendría que poner el año y comprarlos para ver si se salta alguno.

¿Alguna idea?
  #2 (permalink)  
Antiguo 29/11/2013, 08:57
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: agrupar por quarter

El GROUP BY sólo puede operar contra datos existentes. Si el registro no está, no puede encontrar nada, y por tanto no puede agrupar nada.
Ahora bien, de lo que describes se infiere que tienes al menos dos tablas, una donde tienes los objetos primarios, y otra donde están las acciones con fecha que agrupas.
En tu caso, ese GROUP BY debe operar contra algo existente, es decir que deberás relacionar con un LEFT JOIN ambas tablas, donde el agrupamiento será contra el objeto, además del trimestre.
Ten en cuenta que no podrás hacer aparecer registros para cuatrimestres inexistentes, simplemente saldrán ceros.
Si lo que necesitas es un reporte donde cada entidad aparezca cuatro veces al año, asignados a cada trimestre, y sólo cuentas con lo que tienes en base... lamento decirte que deberás resolverlo por programación, ya que como te dije, el SQL no puede procesar lo que no existe.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 01/12/2013, 11:39
 
Fecha de Ingreso: marzo-2013
Mensajes: 83
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: agrupar por quarter

Ok, al final he hecho esto y va:

Código MySQL:
Ver original
  1.     SUM(IF(QUARTER(Fecha_registro)=1, 1, 0)) Q1,
  2.     SUM(IF(QUARTER(Fecha_registro)=2, 1, 0)) Q2,
  3.     SUM(IF(QUARTER(Fecha_registro)=3, 1, 0)) Q3,
  4.     SUM(IF(QUARTER(Fecha_registro)=4, 1, 0)) Q4
  5.     FROM acciones
  6.     WHERE YEAR(Fecha_registro)=".$Año."

No será muy eficiente pero salgo del paso, lo dejo escrito por si a alguien le ocurre algo parecido,

Muchas gracias anyway

Última edición por gnzsoloyo; 01/12/2013 a las 12:15

Etiquetas: Ninguno
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 00:05.