Mind map
TOP y OFFSET-FETCH
Map content
TOP y OFFSET-FETCH
Son dos opciones que utilizamos cuando queremos obtener una determinada cantidad de filas en base a un orden en particular.
- Opción TOP
- TOP es la opción propietaria de T-SQL con la que podemos filtrar una cantidad o un porcentaje determinado de filas con un orden en particular.
- TOP con porcentaje
- Además, como dijimos, podemos no solo mostrar filas en base a una cantidad determinada sino también en base a un porcentaje. Por lo que si quisiéramos mostrar el 2.5% del total de filas que cumplen con un pedido, lo lograríamos anteponiendo la keyword PERCENT después de un valor de tipo decimal que encerramos entre paréntesis.
- Select count(*) from Production.Product SELECT TOP(2.5) Percent [ProductID] AS ID, [Name] AS NOMBRE, [StandardCost] AS PRECIO FROM Production.Product ORDER BY PRECIO desc;
- Además, como dijimos, podemos no solo mostrar filas en base a una cantidad determinada sino también en base a un porcentaje. Por lo que si quisiéramos mostrar el 2.5% del total de filas que cumplen con un pedido, lo lograríamos anteponiendo la keyword PERCENT después de un valor de tipo decimal que encerramos entre paréntesis.
- SELECT TOP(10) [ProductID] AS ID, [Name] AS NOMBRE, [StandardCost] AS PRECIO FROM Production.Product ORDER BY PRECIO desc;
- TOP con porcentaje
- TOP es la opción propietaria de T-SQL con la que podemos filtrar una cantidad o un porcentaje determinado de filas con un orden en particular.
- OPCIÓN OFFSET-FETCH
- La opción OFFST-FETCH es la estándar y tiene la misma funcionalidad que TOP, pero agrega además la capacidad de saltearse filas. Es muy utilizada para cuando queremos paginar nuestros resultados. Deber tener siempre presente el la consulta ORDER BY Primero especificamos el OFFSET con la cantidad de filas que nos queremos saltear, luego definimos FETCH para indicar cuántas filas queremos filtrar.
- SELECT [ProductID] AS ID, [Name] AS NOMBRE, [StandardCost] AS PRECIO FROM Production.Product ORDER BY PRECIO desc OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY
- La opción OFFST-FETCH es la estándar y tiene la misma funcionalidad que TOP, pero agrega además la capacidad de saltearse filas. Es muy utilizada para cuando queremos paginar nuestros resultados. Deber tener siempre presente el la consulta ORDER BY Primero especificamos el OFFSET con la cantidad de filas que nos queremos saltear, luego definimos FETCH para indicar cuántas filas queremos filtrar.
- Opción TOP
Sub-Consultas
- T-SQL soporta consultas anidadas llamadas subconsultas. La ventaja de usar subconsultas es que vamos a poder utilizar el resultado de una consulta en otra sin tener que almacenarlo en una variable.
- Autocontenidas: independientes de la consulta exterior.
- Una subconsulta autocontenida puede funcionar independientemente de la consulta exterior si la seleccionamos y ejecutamos por separado. La siguiente consulta devuelve el producto con el precio más caro de nuestra lista de productos. Como varios productos comparten el precio máximo obtendremos varias filas como resultado. Lo que es importante notar es que si ejecutamos la subconsuta autocontenida encerrada entre paréntesis vamos a obtener un valor único.
- SELECT ProductID, Name, ListPrice FROM Production.Product WHERE ListPrice = (SELECT MAX(ListPrice) FROM Production.Product);
- Multiples Valores
- SELECT ProductID, Name, ListPrice FROM Production.Product WHERE ProductID IN (SELECT ProductID FROM Purchasing.ProductVendor WHERE StandardPrice > 25);
- Una subconsulta autocontenida puede funcionar independientemente de la consulta exterior si la seleccionamos y ejecutamos por separado. La siguiente consulta devuelve el producto con el precio más caro de nuestra lista de productos. Como varios productos comparten el precio máximo obtendremos varias filas como resultado. Lo que es importante notar es que si ejecutamos la subconsuta autocontenida encerrada entre paréntesis vamos a obtener un valor único.
- Correlacionadas: con una dependencia en la consulta externa. El resultado puede ser un escalar, múltiples valores o una tabla.
- Una subconsulta correlacionada trabaja de manera diferente de una autocontenida. Mientras que las autocontenidas se pueden ejecutar independientemente, las correlacionados no pueden correr por separado ya que tienen una referencia a una consulta exterior.
- Select * from [Production].[Product]
- Select ListPrice,ProductSubcategoryID,* from [Production].[Product] where ProductSubcategoryID=10
- SELECT ProductSubcategoryID AS Subcategoria, ProductID, Name AS Nombre, ListPrice AS PrecioDeLista FROM Production.Product AS P1 WHERE ListPrice = (SELECT MIN(ListPrice) FROM Production.Product AS P2 WHERE P2.ProductSubcategoryID = P1.ProductSubcategoryID OR (P2.ProductSubcategoryID IS NULL AND P1.ProductSubcategoryID IS NULL));
- Una subconsulta correlacionada trabaja de manera diferente de una autocontenida. Mientras que las autocontenidas se pueden ejecutar independientemente, las correlacionados no pueden correr por separado ya que tienen una referencia a una consulta exterior.
- Autocontenidas: independientes de la consulta exterior.
- T-SQL soporta consultas anidadas llamadas subconsultas. La ventaja de usar subconsultas es que vamos a poder utilizar el resultado de una consulta en otra sin tener que almacenarlo en una variable.
Apply
- APPLY es un operador que nos permite aplicar cierta lógica de una consulta particular a toda una tabla en la que queremos reproducir esa dinámica sin tener que utilizar un puntero que itere de a una fila por vez
- CROSS APPLY
- SELECT PS.ProductSubcategoryID, PS.Name AS nombreCategoria, A.* FROM Production.ProductSubcategory AS PS CROSS APPLY (SELECT ProductID AS ID_Producto, Name AS NombreProducto, ListPrice AS PrecioProducto FROM Production.Product AS PP WHERE PP.ProductSubcategoryID = PS.ProductSubcategoryID ORDER BY ListPrice, ProductID OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY) AS A ORDER BY PS.ProductSubcategoryID;
- CROSS APPLY
- APPLY es un operador que nos permite aplicar cierta lógica de una consulta particular a toda una tabla en la que queremos reproducir esa dinámica sin tener que utilizar un puntero que itere de a una fila por vez
Dicsor Yenci Hernández Ruíz 2490-13-16413
Information
- Description
- Diseño de Base de Datos Mind Map on TOP y OFFSET-FETCH, created by Dicsor Yenci Hernández Ruíz on 30/09/2016.
- Created by
- Dicsor Yenci Hernández Ruíz
- Views
- 0
- Rating