Cursos › Decisiones basadas en datos: de la pregunta a la respuesta

Agrupar en una tabla lista para graficar

Lección 6 de 8 · 13 min

Una fila por barra

Un gráfico es una tabla disfrazada. Un gráfico de barras de ingresos por fuente necesita exactamente una fila por fuente y una columna por valor. Pasar de miles de filas de pedidos a un puñado de filas de resumen es el trabajo de GROUP BY.

SQL
SELECT source,
       COUNT(*) AS orders,
       ROUND(SUM(net_amount), 2) AS revenue
FROM orders
WHERE status = 'delivered'
  AND order_date >= '2026-01-01'
  AND order_date < '2026-04-01'
GROUP BY source
ORDER BY revenue DESC;

GROUP BY source colapsa todas las filas con la misma fuente en una sola fila, y los agregados como COUNT y SUM funcionan luego dentro de cada grupo. Cada columna en SELECT debe aparecer en GROUP BY o estar dentro de un agregado. De lo contrario, SQL no puede saber cuál de los muchos valores de un grupo mostrar.

Para el primer trimestre de 2026 el resultado pone direct primero con CHF 14'711.70, luego la búsqueda de pago con CHF 5'798.60 y lo orgánico con CHF 5'716.96. Lo social queda último con CHF 2'662.37. Léelo con atención: source es la fuente de la visita que llevó al pedido. De los 273 pedidos hechos desde visitas directas en ese trimestre, solo 22 eran un primer pedido. Esta tabla muestra dónde llegan los pedidos, no qué canal ganó al cliente.

Agrupar por un valor calculado

Para agrupar por mes, calcula el mes a partir de la fecha. strftime(order_date, '%Y-%m') formatea una fecha como texto, por ejemplo 2025-07. Como el texto empieza por el año, ordenarlo también ordena los meses en orden cronológico.

  • Nombra la columna calculada con AS, por ejemplo AS month. En DuckDB puedes entonces escribir GROUP BY month; en otras bases de datos repites el cálculo.
  • Filtra antes de agrupar. WHERE quita filas antes de que se agrupen, así que los pedidos cancelados nunca llegan a las sumas.
  • Ordena las filas de la forma en que se lee el gráfico: los meses por tiempo, las categorías por tamaño.
  • Mantén el número de filas lo bastante pequeño para poder leerlo. Ocho regiones o doce meses hacen un buen gráfico; 96 productos normalmente necesitan un top 10 y una fila para el resto.

Qué aspecto tiene el año

Agrupados por mes, los ingresos entregados en 2025 van de CHF 7'963.79 en julio a CHF 18'373.89 en diciembre. Diciembre no tuvo el mayor número de pedidos; fue noviembre, con 273. Las cestas de diciembre fueron las más grandes, con CHF 70.67 de media. El segundo trimestre de 2025 trajo CHF 37'265.67.

Los pedidos y los ingresos no siempre clasifican los grupos de la misma manera. En 2025 Ginebra tuvo 272 pedidos entregados y Basilea 264, pero Basilea trajo más ingresos, CHF 16'079.85 frente a CHF 15'744.15, porque sus pedidos eran más grandes de media. Cuando dos valores podrían contar historias distintas, ambas columnas pertenecen a la tabla.

Esta forma le importa a Lena de dos maneras. El segundo trimestre no es temporada alta, así que unos ingresos planos de abril a junio no demostrarían que un nuevo presupuesto ha fallado. Y los resultados por canal de diciembre no deberían compararse con los de julio sin decirlo en la nota.

💡 Una tabla lista para graficar no tiene celdas vacías, tiene una unidad clara por columna, como pedidos o CHF, y exactamente las filas que mostrará el gráfico. Si tienes que borrar filas en una hoja de cálculo antes de graficar, cambia la consulta en su lugar.
Verificación de conocimiento
¿Qué consulta devuelve una tabla correcta y lista para graficar de pedidos por región?

Inicia sesión para responder y seguir tu progreso.

Iniciar sesión
</>
Babala Software Netzwerk — Apps, Websites & KI-Lösungen aus Füllinsdorf BL
© 2026 Babala Özdemir · UID CHE-322.105.560 babala.ch info@babala.ch 076 792 63 50 Facebook Instagram