¿Cómo agrego un total como la última fila en mi sql?
Frecuentes
Visto 28,334 veces
9
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!
5 Respuestas
25
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
5
¿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
1
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
0
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
0
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 mysql sql sql-server or haz tu propia pregunta.
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. - Cylindric