Porcentajes en iReport (continuación)

   En el ejemplo anterior habíamos visto como mostrar el porcentaje a partir de una suma de edades para determinar cuantos alumnos hay de "x" edad en el salón de clases, ahora explicaré una pequeña variación de esto, y es mostrar los porcentajes a partir de la suma sabiendo ya cuando es el total de cada apartado.

   En este ejemplo tenemos unos contenedores, cada uno con su peso, y vamos a determinar cuanto en porcentaje es esto, para eso tenemos 2 opciones, podemos utilizar un parámetro con un "UNION" sencillos para que nos de un total al final del resultado, algo como esto:

SELECT
   nombre, peso
FROM
   contenedores
UNION
   SELECT "total",SUM(peso) FROM contenedores
   Y luego ese total lo tomamos y enviamos por parametro, pero como la idea aquí es ser independiente de estos parámetros entonces vamos a complicarlo un poco ( como siempre me gusta hacerlo, >=D ), y la consulta nos queda algo así:

SELECT
     contenedores.`nombre`,
     contenedores.`peso`,
     (
       SELECT SUM(total) FROM
       (
        SELECT SUM(peso) AS total FROM contenedores
        GROUP BY nombre
       ) AS S
     ) AS total
FROM
     contenedores
GROUP BY
     nombre
   Debemos hacerla así, ya que no vamos a mostrar el resultado en una sola fila, si así fuera el caso sería mas fácil hacer esto:

SELECT
     contenedores.`nombre`,
     contenedores.`peso`,
     (
       SELECT SUM(peso) FROM contenedores
        GROUP BY nombre
     ) AS total
FROM
     contenedores
GROUP BY
     nombre
   Y bueno, continuando con esto cada una de las expresiones restantes del gráfico nos quedan así, para explicar mejor como es lo de las gráficas, en esta ocasión mostraré el resultado de la torta junto con su porcentaje entre paréntesis:
  • Key exp: $F{nombre}
  • Value exp: $F{peso}
  • Label exp: $F{peso}+" ("+new java.text.DecimalFormat("0.00").format(($F{peso}.doubleValue()*100)/$F{total})+"%)"

   Y con eso tendremos algo como lo siguiente:
 

2 Comentarios

Escribir Comentario
MAINUS
AUTOR
3 de junio de 2014, 18:36 delete

Quiero saber si me pueden apoyar con el siguiente tema... Mi DB en postgres recibe los datos de una persona entre ellos esta la fecha de nacimiento cuando genero el reporte me gustaria que me imprimiera la edad de dicha persona solo calculando la fecha de nacimiento... si me pueden ayudar muchas gracias y si no tambien GRACIAS

Responder
avatar
3 de junio de 2014, 19:46 delete

Aunque no tiene nada que ver con el tema aquí lo tienes: SELECT AGE(fecha) FROM persona

Responder
avatar

Lamentablemente hay muchos usuarios en la red que han llegado al blog para escribir obscenidades, así que la moderación se hace necesaria. Recuerda utilizar un lenguaje correcto y espera a que sea aprobado.

Si necesitas publicar código haz click en "Conversión" para hacerlo legible.
ConversiónConversión EmoticonEmoticon