PGDay Campinas 2013 - Window Function e CTE – Surpreendente

575 visualizações

Publicada em

“Window Function e CTE – Surpreendente”

Demonstrar esses recursos desconhecidos por muitos e como eles facilitam o dia a dia.
Rogério Augusto Bassete

PALESTRANTE
Rogério Augusto Bassete trabalha em desenvolvimento de sistemas a 17 anos e com PostgreSQL desde 1992. Utiliza PostgreSQL em mais de 1000 clientes em todo o Brasil. Foi palestrante da PgBR 2011.

--
Palestra apresentada no PGDay Campinas 2013

Publicada em: Software
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
575
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
7
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

PGDay Campinas 2013 - Window Function e CTE – Surpreendente

  1. 1. WINDOW FUNCTIONS e CTE surpreendente Rogério Bassete rogerio.bassete@gmail.com
  2. 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. 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.
  4. 4. O QUE É COMMON TABLE EXPRESSION - CTE?
  5. 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;
  6. 6. CTE – ONDE USAR? • SELECT; • INSERT; • UPDATE; • DELETE.
  7. 7. SGBD SUPORTE • PostgreSQL 8.4 • Oracle® • SQL Server® 2005 • DB2® • Firebird 2.1 • ...
  8. 8. VAMOS AS DEMOS!
  9. 9. O QUE É WINDOW FUNCTION?
  10. 10. 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
  11. 11. SGBD SUPORTE • PostgreSQL 8.4 • Oracle® 8i • SQL Server® 2005 • DB2® 6 • Firebird 3.0 • ...
  12. 12. WINDOW FUNCTIONS • row_number() • rank() • dense_rank() • percent_rank() • cume_dist() • ntile() • lag() • lead() • first_value() • last_value() • nth_value() Fonte: http://www.postgresql.org/docs/9.2/interactive/functions-window.html
  13. 13. AGGREGATE FUNCTIONS • avg() • count() • max() • min() • sum() • Stddev() Fonte: http://www.postgresql.org/docs/9.2/interactive/functions-aggregate.html
  14. 14. 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)
  15. 15. VAMOS AS DEMOS!
  16. 16. OBRIGADO! rogerio.bassete@gmail.com rogerio.bassete@outlook.com

×