Las funciones de ventana (TSQL window functions), originalmente presentadas en SQL Server han probado ser muy útiles para resolver escenarios complejos de clasificación/ordenamiento y agregación. Las mejoras que nos trae SQL Server 2012 hace imperativo conocer su funcionamiento y aplicación. En esta sesión discutiremos sus componentes principales y como utilizar las mismas tomando como ejemplos situaciones de la vida real.
Dominando las funciones de ventana (window functions) en TSQL
1. Dominando las funciones de ventana en TSQL
19 de Noviembre (12 pm GMT -5)
José L. Rivera
Resúmen:
Las funciones de ventana (TSQL window functions),
originalmente presentadas en SQL Server han probado
ser muy útiles para resolver escenarios complejos de
clasificación/ordenamiento y agregación. Las mejoras
que nos trae SQL Server 2012 hace imperativo conocer
su funcionamiento y aplicación. En esta sesión
discutiremos sus componentes principales y como
utilizar las mismas tomando como ejemplos situaciones
de la vida real.
Próximos Eventos
Configurando transactional
replication para reporteo de una
forma segura
26 de Noviembre
Kenneth Ureña
3 y 4 de Diciembre
Está por comenzar:
2. Dominando las funciones de ventana en TSQL
19 de Noviembre de 2014
Jose L. Rivera
MVP | MCITP | MCTS | MCSA
BI Consultant, Nagnoi LLC
PASS Global Spanish VC | PRPASS
3.
4. Agenda
- Resumen de la funciones
- OVER
- Categorías de funciones
- Ordenamiento
- Agregación
- Analíticos
- Q & A
5. Funciones de Ventana (Windows Functions)
• Introducido en SQL Server 2005, mejoras significativas en
SQL Server 2012
• La función es aplicada a un conjunto de filas (rows)
• La especificación de la ventana es implementada usando
la clausula de OVER
• Todavía es trabajo en progreso!
6. Delimita las filas dentro de la
partición al especificar las
Divide el conjunto en
pedazos (particiones) y la
operación fronteras es dentro aplicada de a la
cada
partición partición
individualmente
La Clausula OVER
• Define el conjunto (ventana) sobre la cual la función será
aplicada
OVER (
<PARTITION BY clause>
<ORDER BY clause>
<ROW or RANGE clause>
)
Define el orden lógico de la
data para cada partición de
un conjunto
8. ROW or RANGE (moldura)
• Define como nos movemos dentro de la ventana para
modificar la selección de las filas
• BETWEEN <window frame bound > AND <window frame bound >
10. Ordenamiento
• ROW_NUMBER()
• Genera un numero secuencial continuo (comienza en 1)
• RANK()
• Ordena la data (Olympic rank – en caso de empate)
• DENSE_RANK()
• Ordena la data sin brincos
• NTILE()
• Distribuye la data en grupos
No hay moldura
12. Agregación
• SUM() | AVG() | COUNT() | COUNT_BIG() | MIN() | MAX()
• Son las mas comunes, no hay sorpresas
• CHECKSUM_AGG
• Calcula un checksum de los valores en el grupo
• STDEV() | STDEVP()
• Desviación estándar estadística (regular o poblacional)
• VAR() | VAR()
• Varianza estadística (regular o poblacional)
14. Analíticos
• LEAD() | LAG()
• Obtiene la data de la fila anterior o posterior en el mismo
conjunto
LEAD | LAG
(scalar_expression [,offset] [,default])
OVER ( [ partition_by_clause ]
order_by_clause )
No hay moldura
15. Analíticos
• FIRST_VALUE() | LAST_VALUE()
• Permite obtener el primer/ultimo valor en un conjunto
ordenado de valores
FIRST_VALUE | LAST_VALUE
( [scalar_expression] )
OVER ( [ partition_by_clause ]
order_by_clause
rows_range_clause )
16. Analíticos
• CUME_DIST()
• Calcula la distribución acumulativa de un valor en un grupo
de valores
No hay moldura
CUME_DIST()
OVER ( [ partition_by_clause ]
order_by_clause )
17. Analíticos
• PERCENT_RANK()
• Calcula el orden relativo de una fila dentro de un grupo de
filas
No hay moldura
PERCENT_RANK()
OVER ( [ partition_by_clause ]
order_by_clause )
18. Analíticos
No hay moldura
• PERCENTILE_DIST()
• Calcula la percentila para un conjunto de valores ordenados
PERCENTILE_DIST ( numeric_literal )
WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )
OVER ( [ partition_by_clause ]
order_by_clause
rows_range_clause )
19. Analíticos
• PERCENTILE_CONT()
• Calcula la percentila basada en una distribución continua de
valores.
No hay moldura
PERCENTILE_CONT ( numeric_literal )
WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )
OVER ( [ partition_by_clause ]
order_by_clause
rows_range_clause )
21. Importante!
• SQL Server 2005/2008/2008 R2
• Ordenamiento
• PARTITION BY + ORDER BY
• Agregación
• Solo PARTITION BY
• SQL Server 2012+
• Analíticos
• Agregación
• Se añaden ORDER BY
• Window Framing (ROWS | RANGE)
22. Manténgase conectado a nosotros!
Visítenos en http://globalspanish.sqlpass.org
/SpanishPASSVC
lnkd.in/dtYBzev
/user/SpanishPASSVC
/SpanishPASSVC
23. PASS Volunteer Awards
Outstanding Volunteer Award
Do you know a volunteer that has gone
above and beyond recently?
Nominate them for the monthly OVA.
VolunteerRecognition@sqlpass.org
PASSion Award
The highest of PASS accolades presented
yearly to a volunteer.
24. Manténgase involucrado!
• Registrate HOY en sqlpass.org para una membresia gratuita
• Linked In: http://www.sqlpass.org/linkedin
• Facebook: http://www.sqlpass.org/facebook
• Twitter: @SQLPASS
• PASS: http://www.sqlpass.org
25. Configurando transactional replication para
reporteo de una forma segura
26 de Noviembre (12 pm GMT -5)
Kenneth Ureña
Resúmen:
En esta sesión vamos a ver la forma de configurar
transactional replication, la seguridad necesaria y los
diferentes componentes que se involucran en el
funcionamiento de la misma. Al igual como las mejores
prácticas para escalabilidad y distribuciones de carga,
convirtiendo nuestro entorno replicado en un amigo de
distribución de carga, en lugar de una carga de la
administración.
Próximo Evento