Modo de empleo limitada ir a buscar en sql

Video: Having con SQL SERVER (Buscar duplicados)

Cada vez que se cambia el estándar SQL ISO / IEC, por lo general es ampliar las capacidades del lenguaje. Ésto es una cosa buena. Sin embargo, a veces cuando se hace un cambio de este tipo no se puede prever todas las posibles consecuencias. Esto sucedió con la adición de limitada HA PODIDO RECUPERAR capacidad en SQL: 2008.

La idea de la limitada HA PODIDO RECUPERAR y es que aunque una SELECCIONAR declaración puede devolver un número indeterminado de filas, tal vez sólo se preocupan por los tres o tal vez entre los diez primeros. De conformidad con esta idea, SQL: sintaxis que se muestra en el siguiente ejemplo 2008 ha añadido:

Vendedor SELECT, AVG (VentaTotal) a partir de SalesGroup POR SalespersonORDER POR AVG (VentaTotal) DESCFETCH PRIMER 3 filas ONLY-

Esto se ve muy bien. ¿Quieres ver que sus tres mejores vendedores son en términos de aquellos que están vendiendo productos en su mayoría de alto precio. Sin embargo, hay un pequeño problema con esto. ¿Qué pasa si tres personas están vinculadas con el mismo total de la venta promedio, por debajo de los dos mejores vendedores? Sólo se devolverá uno de los tres. ¿Cúal? Es indeterminado.

Indeterminación es intolerable para cualquier persona de base de datos que se respete por lo que esta situación se corrigió en SQL: 2011. se añadió una nueva sintaxis para incluir lazos, de esta manera:

Comercial SELECT, AVG (VentaTotal) a partir de SalesGroup POR SalespersonORDER POR AVG (VentaTotal) DESCFETCH PRIMEROS 3 filas con Ties-

Ahora el resultado está completamente determinado: Si hay un empate, se obtiene todas las filas atadas. Al igual que antes, si se deja fuera de la CON LAZOS modificador, el resultado es indeterminado.

Un par de mejoras adicionales se hicieron a la limitada HA PODIDO RECUPERAR capacidad en SQL: 2011.

En primer lugar, los porcentajes se manejan, así como a un número específico de filas. Consideremos el siguiente ejemplo:

Vendedor SELECT, AVG (VentaTotal) a partir de SalesGroup POR SalespersonORDER POR AVG (VentaTotal) DESCFETCH primeras filas 10 por ciento ONLY-

Video: Consulta Left Join en SQL Server

Es concebible que podría haber un problema con los lazos cuando se trata de porcentajes, al igual que existe con un simple número de registros, por lo que la CON LAZOS sintaxis también se puede utilizar aquí. Puede incluir vínculos o no, dependiendo de lo que desee en cualquier situación particular.

En segundo lugar, supongamos que usted no desea que los tres primeros o el diez por ciento, pero en su lugar desea que el segundo de tres segundos o diez por ciento? Tal vez usted quiere saltar directamente a un 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) a partir de SalesGroup POR SalespersonORDER POR AVG (VentaTotal) DESCOFFSET 3 ROWSFETCH SIGUIENTE 3 filas ONLY-

los COMPENSAR palabra clave indica el número de filas que saltar antes de ir a buscar. La palabra clave SIGUIENTE especifica que las filas a captar son los que inmediatamente después del desplazamiento. Ahora se devuelve a los vendedores con la venta total media cuarta, quinta y sexta más alta.

Video: Consultas en SQL

Como se puede ver, sin la CON LAZOS sintaxis, todavía hay un problema de indeterminación. Si la tercera, cuarta, quinta y vendedores están vinculados, es indeterminada cuales dos serán incluidos en este segundo lote y cuál habrá sido incluido en el primer grupo.

Puede ser mejor evitar el uso de la capacidad limitada FETCH. Es también probable que ofrecer resultados engañosos.

Artículos Relacionados