Cursos › Decisões Orientadas por Dados: Da Pergunta à Resposta
Agrupar numa Tabela Pronta para Gráfico
Lição 6 de 8 · 13 min
Uma linha por barra
Um gráfico é uma tabela disfarçada. Um gráfico de barras de receita por fonte precisa exatamente de uma linha por fonte e uma coluna por valor. Passar de milhares de linhas de encomendas para um punhado de linhas-resumo é o trabalho do GROUP BY.
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 junta todas as linhas com a mesma fonte numa só linha, e agregações como COUNT e SUM passam então a atuar dentro de cada grupo. Toda a coluna em SELECT tem de aparecer no GROUP BY ou estar dentro de uma agregação. Caso contrário, o SQL não pode saber qual dos muitos valores de um grupo deve mostrar.
Para o primeiro trimestre de 2026, o resultado coloca direct em primeiro lugar com CHF 14'711.70, depois a pesquisa paga com CHF 5'798.60 e o orgânico com CHF 5'716.96. As redes sociais ficam em último com CHF 2'662.37. Lê com atenção: source é a fonte da visita que levou à encomenda. Das 273 encomendas feitas a partir de visitas diretas nesse trimestre, apenas 22 foram uma primeira encomenda. Esta tabela mostra onde chegam as encomendas, não que canal conquistou o cliente.
Agrupar por um valor calculado
Para agrupar por mês, calcula o mês a partir da data. strftime(order_date, '%Y-%m') formata uma data como texto, por exemplo 2025-07. Como o texto começa pelo ano, ordená-lo também ordena os meses por ordem cronológica.
- Dá um nome à coluna calculada com
AS, por exemploAS month. No DuckDB podes depois escreverGROUP BY month; noutras bases de dados repete-se o cálculo. - Filtra antes de agrupar. O
WHEREremove linhas antes de serem agrupadas, por isso as encomendas canceladas nunca chegam às somas. - Ordena as linhas da forma como o gráfico se lê: meses por tempo, categorias por tamanho.
- Mantém o número de linhas suficientemente pequeno para se ler. Oito regiões ou doze meses fazem um bom gráfico; 96 produtos normalmente precisam de um top 10 e uma linha para o resto.
Que aspeto tem o ano
Agrupada por mês, a receita entregue em 2025 vai de CHF 7'963.79 em julho a CHF 18'373.89 em dezembro. Dezembro não teve o maior número de encomendas; foi novembro, com 273. Os cabazes de dezembro foram os maiores, com uma média de CHF 70.67. O segundo trimestre de 2025 trouxe CHF 37'265.67.
As encomendas e a receita nem sempre ordenam os grupos da mesma forma. Em 2025, Genebra teve 272 encomendas entregues e Basileia 264, mas Basileia trouxe mais receita, CHF 16'079.85 contra CHF 15'744.15, porque as suas encomendas eram maiores em média. Quando dois valores podem contar histórias diferentes, ambas as colunas pertencem à tabela.
Esta forma importa a Lena de duas maneiras. O segundo trimestre não é época alta, por isso uma receita estagnada de abril a junho não provaria que um novo orçamento falhou. E os resultados de um canal em dezembro não deviam ser comparados com os resultados de julho sem o dizer no memorando.
Entra para responder e acompanhar o teu progresso.
Entrar