Esta publicación es una continuación de la Cláusula SQL Offset-Fetch
Ahora, entendemos cómo usar la Cláusula Fetch en Oracle Database, junto con la Compensación especificada y también entendemos que la cláusula Fetch es la cláusula recién agregada en Oracle Database 12c o es la nueva característica agregada en Oracle Database 12c.
Ahora considere el siguiente ejemplo:
Supongamos que tenemos una tabla llamada myTable con los siguientes datos:
ID NAME SALARY ----------------------------- 1 Geeks 10000 4 Finch 10000 2 RR 6000 3 Dhoni 16000 5 Karthik 7000 6 Watson 10000
Ahora, supongamos que queremos que las primeras tres filas estén ordenadas por salario en orden descendente, luego se debe ejecutar la siguiente consulta:
Query: SELECT * from myTable order by salary desc fetch first 3 rows only; Output: We got only first 3 rows order by Salary in Descending Order ID NAME SALARY -------------------------- 3 Dhoni 16000 1 Geeks 10000 4 Finch 10000
Nota : en el resultado anterior, obtuvimos las primeras 3 filas, ordenadas por Salario en orden descendente, pero tenemos una fila más con el mismo salario, es decir, la fila con el nombre Watson y Salario 10000 , pero no apareció porque restringimos nuestra salida solo a las tres primeras filas. Pero esto no es óptimo, porque la mayoría de las veces en aplicaciones en vivo también se nos pedirá que muestremos las filas vinculadas.
Ejemplo de la vida real : supongamos que tenemos 10 corredores corriendo y solo tenemos 3 premios, es decir, primero, segundo, tercero, pero supongamos que los corredores 3 y 4 terminaron la carrera juntos al mismo tiempo, por lo que en este caso tenemos un empate entre 3 y 4 y por eso ambos son titulares del Puesto 3.
con lazos
Entonces, para superar el problema anterior, Oracle introduce una cláusula conocida como cláusula With Ties . Ahora, veamos nuestro ejemplo anterior usando la cláusula With Ties.
Query: SELECT * from myTable order by salary desc fetch first 3 rows With Ties; Output: See we get only first 3 rows order by Salary in Descending Order along with Tied Row also ID NAME SALARY -------------------------- 3 Dhoni 16000 1 Geeks 10000 6 Watson 10000 // We get Tied Row also 4 Finch 10000
Ahora, mira, también obtuvimos la fila empatada , que no obtuvimos anteriormente.
Nota : Obtenemos la fila vinculada en nuestra salida, solo cuando usamos la cláusula order by en nuestra instrucción Select. Supongamos que, si no usamos la cláusula order by, y aún estamos usando la cláusula with ties , entonces no obtendremos la fila vinculada en nuestra salida y la consulta se comporta igual que si estamos usando la cláusula ONLY en lugar de With Ties cláusula.
Ejemplo : supongamos que ejecutamos la siguiente consulta (sin usar la cláusula order by):
Query: SELECT * from myTable fetch first 3 rows With Ties; Output: See we won't get the tied row because we didn't use order by clause ID NAME SALARY -------------------------- 1 Geeks 10000 4 Finch 10000 2 RR 6000
En el resultado anterior, no obtendremos la fila empatada y solo obtendremos las primeras 3 filas. Por lo tanto, With Ties está vinculado con la cláusula order by , es decir, obtenemos la fila vinculada en la salida si y solo si usamos With Ties junto con la cláusula Order by.
Nota : asegúrese de ejecutar estas consultas en Oracle Database 12c, porque la cláusula Fetch es la característica recién agregada en Oracle 12c, también con vínculos, se ejecuta solo en Oracle Database 12c, estas consultas no se ejecutarán en versiones anteriores de 12c como 10g o 11g.
Referencias : Acerca de la cláusula Fetch, así como la cláusula With Ties , Realización de consultas SQL en línea
Publicación traducida automáticamente
Artículo escrito por classyallrounder y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA