¿Cómo agrego un total como la última fila en mi sql?

Estoy tratando de mostrar una fila, 'Total', que hará una suma de la columna Contar. El siguiente código tendrá dos columnas, Entorno y Recuento.

select 
case 
when env is null THEN 'Unknown' 
else env
end,
count(*) as Count
from env_table
group by env
order by env
/

Salida que me gustaría:

Windows 200

Linux 120

Total 320

Como puede ver arriba, lo que me gustaría hacer es agregar una fila llamada "Total" al final que esencialmente haría una SUMA (recuento (*)). ¿Cuál es la sintaxis adecuada para hacer esto? ¡Gracias!

preguntado el 03 de mayo de 12 a las 15:05

Tiene que estar en SQL? Normalmente no mezclarías este tipo de cosas en una sola consulta. Si los datos son filas de registros, eso es todo, los datos de resumen están separados. Como ya se mostró, se puede listo, no estoy seguro de por qué querrías hacerlo. No hay premio por reducir el número de consultas ejecutadas. -

5 Respuestas

Utilice el WITH ROLLUP modificador a GROUP BY:

SELECT   IFNULL(env, 'Unknown'),
         COUNT(*) AS Count
FROM     env_table
GROUP BY env WITH ROLLUP
ORDER BY env

contestado el 03 de mayo de 12 a las 15:05

Rollup es exactamente lo que estaba buscando. Ahora el único problema es que la fila aparece como "Desconocido". ¿Cómo puedo hacer esto "Total"? ¡Gracias por tu ayuda! - ad2387

¿Quizás algo como esto?

SELECT   IFNULL(env, 'Unknown'),
         COUNT(*) AS Count
FROM env_table
GROUP BY env
ORDER BY env
UNION ALL
SELECT   null,
         Count(*)
FROM env_table

contestado el 03 de mayo de 12 a las 16:05

SELECT   COALESCE(env, 'Total') AS Description,
         COUNT(*) AS Count
FROM     env_table
GROUP BY env WITH ROLLUP
ORDER BY env

Respondido 21 ago 15, 15:08

SELECT env, count 
  FROM (SELECT CASE WHEN env is null THEN 'Unknown' ELSE env END env,
               count(*) count
          FROM env_table
         GROUP BY env
      ORDER BY env)
UNION ALL
SELECT 'Total' env,
       count(*) count
  FROM env_table       

contestado el 03 de mayo de 12 a las 16:05

Espero que funcione. En caso de que se necesite alguna corrección, me encantaría escuchar mi error.

select environment, count from table a
union all
(select "total" as environment, sum(count) from table b
group by 1)

Respondido el 26 de junio de 21 a las 16:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.