O documento discute Window Functions e Common Table Expressions (CTE) em SQL. O palestrante explica que essas funcionalidades são pouco conhecidas mas úteis para simplificar consultas complexas. Ele apresenta exemplos de como usar CTEs para escrever subconsultas e Window Functions para aplicar funções agregadas sobre grupos de linhas.
2. Rogério Augusto Bassete
• Trabalho na MicroWork Softwares
• 16 anos experiência programação
• 11 anos experiência em PostgreSQL
• Palestrante da PGCON 2011
3. MOTIVAÇÕES
• Poucas pessoas conhecem WINDOW
FUNCTION e/ou COMMON TABLE EXPRESSION
- CTE;
• É muito complicado de usar;
• Faço o mesmo com sub-select;
• Crio tabela temporária;
• Faço isso no meu código fonte.
5. CTE fornece um maneira de escrever subconsultas
para uso em uma instrução maior. Existe apenas
durante a execução de uma consulta.
(intenet)
WITH cte AS (
SELECT * FROM funcionario
)
SELECT * FROM cte;
11. Window Function é uma função aplicada sobre
um conjunto de dados.
(Itzik Ben-Gan)
SELECT dep, nome, salario,
avg(salario) OVER (PARTITION BY dep) AS media
FROM funcionario
15. GANHOS?
SELECT
f2.departamento, f2.nome, f2.salario,
( SELECT avg(f1.salario) FROM funcionario f1 WHERE
f1.departamento = f2.departamento
) AS media
FROM funcionario f2
ORDER BY f2.departamento;
(cost=2675.12..2675.65 rows=210 width=352)
SELECT departamento, nome, salario,
avg(salario) OVER (PARTITION BY departamento) AS media
FROM funcionario
ORDER BY departamento;
(cost=20.20..23.87 rows=210 width=352)