Hay momentos en los que necesitas recuperar solo un subconjunto de registros de una tabla de base de datos. Esto puede ser útil en escenarios como la generación de listas de selección para un sistema de inventario, donde deseas seleccionar los artículos más antiguos en stock. En SQL Server, puedes lograr este requisito utilizando la cláusula TOP. En este artículo, exploraremos cómo seleccionar un subconjunto de datos utilizando la cláusula TOP.
Sintaxis de la cláusula TOP
La sintaxis para la cláusula TOP es la siguiente:
TOP (expresión) [PORCENTAJE] [CON LAZOS]
El parámetro expresión
es un campo requerido y especifica el número de registros que deseas devolver. Esto puede ser un tipo de dato entero o flotante, dependiendo de si se incluye el parámetro PORCENTAJE. La opción PORCENTAJE es opcional y se utiliza para identificar el porcentaje de filas a devolver. La opción CON LAZOS se utiliza para incluir filas que tienen los mismos valores de columna que la última fila cuando está presente una cláusula ORDER BY.
La cláusula TOP se puede utilizar con las instrucciones SELECT, INSERT, UPDATE y DELETE. En este artículo, nos centraremos en el uso de la cláusula TOP con una instrucción SELECT.
Ejemplo: Recuperar un subconjunto de registros
Consideremos una tabla de ejemplo llamada “Ventas” con las columnas SalesID, SalesDate, Region y SalesAmount. Queremos recuperar las 2 primeras filas de esta tabla:
SELECT TOP (2) * FROM Ventas;
Esta consulta devolverá los siguientes resultados:
SalesID | SalesDate | Region | SalesAmount |
---|---|---|---|
1 | 2014-12-01 | NorthWest | 102.99 |
2 | 2014-12-01 | SouthWest | 41.95 |
Si deseas recuperar las 2 primeras filas basadas en una columna específica, puedes incluir una cláusula ORDER BY:
SELECT TOP (2) * FROM Ventas ORDER BY SalesAmount DESC;
Esta consulta devolverá los siguientes resultados:
SalesID | SalesDate | Region | SalesAmount |
---|---|---|---|
6 | 2014-12-01 | SouthWest | 1012.31 |
5 | 2014-12-01 | NorthWest | 400.78 |
Uso de variables en la cláusula TOP
A veces, es posible que necesites determinar dinámicamente el número de filas a devolver. En esos casos, puedes usar variables en la cláusula TOP. Aquí tienes un ejemplo:
DECLARE @Top int; SET @Top = 2; SELECT TOP (@Top) * FROM Ventas ORDER BY SalesAmount DESC;
En este ejemplo, declaramos una variable entera llamada @Top y le asignamos un valor de 2. Luego, usamos esta variable en la cláusula TOP para determinar dinámicamente el número de filas a devolver.
También puedes usar expresiones en la cláusula TOP. Por ejemplo, la siguiente consulta devuelve el número de filas basado en el mes actual:
SELECT TOP (MONTH(GETDATE())) * FROM Ventas ORDER BY SalesAmount DESC;
Esta consulta devolverá un número variable de filas, dependiendo del mes actual.
Uso del valor de porcentaje con la cláusula TOP
Si deseas devolver un porcentaje específico de filas de una tabla, puedes usar la opción PORCENTAJE. Por ejemplo:
SELECT TOP (13) PORCENTAJE * FROM Ventas ORDER BY SalesAmount DESC;
En esta consulta, especificamos que queremos devolver el 13 por ciento de las filas. SQL Server redondea el valor de porcentaje calculado y devuelve el número correspondiente de filas. Si el valor redondeado es menor que 1, SQL Server devuelve una fila. Si el valor redondeado es mayor que el número total de filas, SQL Server devuelve todas las filas.
Entendiendo la opción LAZOS
De forma predeterminada, cuando usas la cláusula TOP, SQL Server devuelve solo el número especificado de filas. Sin embargo, si deseas incluir filas que tienen los mismos valores de columna que la última fila, puedes usar la opción CON LAZOS. Aquí tienes un ejemplo:
SELECT TOP (3) CON LAZOS * FROM Ventas ORDER BY Region DESC;
En esta consulta, usamos la opción CON LAZOS para incluir cualquier fila que tenga el mismo valor de Región que la tercera fila. Esto devolverá todas las filas con el mismo valor de Región, incluso si excede el número especificado de filas.
Es importante tener en cuenta que al usar la opción CON LAZOS, se requiere una cláusula ORDER BY. Si olvidas incluir la cláusula ORDER BY, la consulta resultará en un error.
Conclusión
La cláusula TOP en SQL Server proporciona una forma sencilla de recuperar un subconjunto de registros de una tabla. Ya sea que necesites devolver un número específico de filas o un porcentaje de filas, la cláusula TOP puede ayudarte a lograr este requisito. Al comprender la sintaxis y las opciones disponibles, puedes utilizar eficazmente la cláusula TOP en tus consultas SQL.
Gracias por leer este artículo. ¡Mantente atento para más consejos y trucos de SQL Server!