domingo, julho 14, 2013

Pivot Table no PostgreSQL

Pivot Table (ou Crosstab) é uma análise que resulta na inversão de linhas por colunas em uma consulta SQL. Funciona de forma semelhante a uma matriz inversa e seu uso resume uma série de registos em uma tabela mais fácil de ser interpretada, por exemplo:

Figura 1 - Conjunto de dados

Digamos que a partir do conjunto de dados da Figura 1 seja necessário totalizar a quantidade de acidentes por sexo para cada bairro. O resultado pode ser visto na Figura 2.

Figura 2 - Exemplo de Pivot Table

Utilizando a função de agregação SUM() em conjunto com a expressão CASE obtemos o resultado da Pivot Table:

SELECT bairro,
sum(CASE WHEN sexo ='MASCULINO' THEN 1 ELSE 0 END) AS total_homens,
sum(CASE WHEN sexo ='FEMININO' THEN 1 ELSE 0 END) AS total_mulheres
FROM acidentes
GROUP BY bairro
ORDER BY total_homens DESC, total_mulheres DESC;
view raw gistfile1.sql hosted with ❤ by GitHub

Nenhum comentário: