Transformando Linhas em Colunas
Parte da seção Além do Básico do Journey de SQL da Coddy — lição 14 de 27.
Combine agregação condicional com GROUP BY para transformar linhas em colunas. É a versão SQL de uma tabela dinâmica de planilha.
Suponha que sales tenha linhas como (month, product, units). Para ver uma linha por mês com uma coluna por produto:
SELECT
month,
SUM(CASE WHEN product = 'A' THEN units ELSE 0 END) AS product_a,
SUM(CASE WHEN product = 'B' THEN units ELSE 0 END) AS product_b
FROM sales
GROUP BY monthO agrupamento GROUP BY que cada SUM(CASE …) vê são as linhas de um mês; o CASE seleciona a fatia para um produto.
Desafio
FácilTabelas e colunas disponíveis:
<strong>sales</strong>:<strong>month</strong>,<strong>product</strong>,<strong>units</strong>
Pivoteie os dados para que cada linha seja um month com estas colunas:
monthapples: total deunitspara o produto'apples'naquele mêsbananas: o mesmo para'bananas'cherries: o mesmo para'cherries'total: total deunitsde todos os produtos naquele mês
Retorne apenas os meses cujo total seja pelo menos 20. Ordene por month.
Experimente você mesmo
SELECT month,
-- um SUM(CASE ...) por produto, mais o total
FROM sales
GROUP BY month
-- filtrar para meses com total >= 20
ORDER BY month
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Além do Básico
3Agregação Condicional
COUNT com CASESUM com CASETransformando Linhas em ColunasRecapitulação - Fontes de Tráfego