Cómo usar limitada ha podido recuperar en sql
Siempre que se cambie el estándar SQL ISO / IEC, por lo general es para ampliar las capacidades de la lengua. Ésto es una cosa buena. Sin embargo, a veces, cuando se realiza un cambio tal que no se puede prever todas las posibles consecuencias. Esto sucedió con la adición de limitada FETCH capacidad en SQL: 2008.
La idea de la limitada FETCH es que, aunque una SELECT declaración puede devolver un número indeterminado de filas, tal vez usted se preocupa sólo de los tres mejores o tal vez entre los diez primeros. De acuerdo con esta idea, SQL: sintaxis que se muestra en el siguiente ejemplo 2008 ha añadido:
Vendedor SELECT AVG (VentaTotal) DE SalesGroup POR SalespersonORDER POR AVG (VentaTotal) DESCFETCH PRIMERA 3 FILAS ONLY-
Esto se ve muy bien. ¿Quieres ver quiénes son sus tres principales vendedores son en cuanto a aquellos que están vendiendo productos en su mayoría de alto precio. Sin embargo, hay un pequeño problema con esto. Lo que si tres personas están empatados con el mismo total de la venta promedio, por debajo de los dos mejores vendedores? Sólo uno de los tres serán devueltos. ¿Cúal? Es indeterminado.
La indeterminación es intolerable para cualquier persona de base de datos que se precie por lo que esta situación se corrigió en SQL: 2011. Se añadió una nueva sintaxis para incluir vínculos, de esta manera:
Comercial SELECT, AVG (VentaTotal) DE SalesGroup POR SalespersonORDER POR AVG (VentaTotal) DESCFETCH PRIMEROS 3 FILAS CON Ties-
Ahora el resultado es determinado por completo: Si hay un empate, se obtiene todas las filas atadas. Al igual que antes, si deja fuera de la CON LAZOS modificador, el resultado es indeterminado.
Un par de mejoras adicionales se hicieron a la limitada FETCH capacidad en SQL: 2011.
En primer lugar, los porcentajes se manejan, así como sólo un número determinado de filas. Considere el siguiente ejemplo:
Vendedor SELECT AVG (VentaTotal) DE SalesGroup POR SalespersonORDER POR AVG (VentaTotal) DESCFETCH PRIMERAS FILAS 10 por ciento ONLY-
Es concebible que podría haber un problema con vínculos cuando se trata de porcentajes, así como no es con un simple número de registros, por lo que el CON LAZOS sintaxis también se puede utilizar aquí. Puede incluir vínculos o no, dependiendo de lo que quieras en cualquier situación particular.
En segundo lugar, supongamos que usted no quiere que los tres primeros o el diez por ciento, pero en su lugar desea que el segundo tres o segundo diez por ciento? Tal vez usted desea saltar directamente a un cierto punto de profundidad en el conjunto de resultados. SQL: 2011 cubre esta situación también. El código sería similar a esto:
Vendedor SELECT AVG (VentaTotal) DE SalesGroup POR SalespersonORDER POR AVG (VentaTotal) DESCOFFSET 3 ROWSFETCH SIGUIENTE 3 FILAS ONLY-
los COMPENSAR palabra clave indica cuántas filas para saltar antes de ir a buscar. La palabra clave SIGUIENTE especifica que las filas a captar son los que inmediatamente después de la compensación. Ahora se devuelve a los vendedores con el cuarto, quinto y sexto más alto promedio total de la venta.
Como se puede ver, sin la CON LAZOS sintaxis, todavía hay un problema de indeterminación. Si el tercero, cuarto, quinto y vendedores están ligados, es indeterminado cuales dos se incluirán en este segundo lote y que uno se han incluido en el primer lote.
Puede ser mejor evitar el uso de la limitada capacidad de FETCH. Es muy probable que ofrecer resultados engañosos.