Secciones

Agrupar por fecha y año con Criteria en Grails

Inicio » Artículos » Agrupar por fecha y año con Criteria en Grails
La categoría del artículo es
Escrito el 14 mayo 2012, 13:44


Actualmente estoy desarrollando un par de aplicaciones en que las estadísticas son fundamentales para la correcta realización de las mismas. En primer lugar, aconsejaros que utilicéis Google Chart para pintar todo tipo de gráficas de una forma muy sencilla.

En una de las gráficas necesitaba obtener una gráfica para saber el trabajo de los usuario registrados en la misma en un espacio de tiempo. Concretamente necesitaba saber cuantas entradas había insertado cada usuario en cada mes. Para ello me decidí a utilizar una namedQueries y por lo tanto utilizar criteria. Este sería el código para realizar esta consulta agrupada tanto por usuario como por mes y año.

Groovy:
import org.hibernate.criterion.Projections
import org.hibernate.type.Type
import org.hibernate.Hibernate

static namedQueries = {
  statsByUserAndMonth {
    isNotNull("createdBy")
    projections {
        rowCount()
        groupProperty "createdBy"//Agrupamos por usuario
        addProjectionsToList(Projections.sqlGroupProjection(
            "month(date_created) as month, year(date_created) as year",
            "month(date_created), year(date_created)",
            ["month","year"].toArray(new String[2]),
            [Hibernate.INTEGER, Hibernate.INTEGER].toArray(new Type[2])),
            "dateCreated"
        )
    }
  }
}
 

Es importante tener en cuenta que en la parte de sqlGroupProjection se hace referencia a la columna creada en la base de datos.


Espero tus comentarios...

Se han desactivado los comentarios a este artículo.