SQL First Value: Sintaxis y Ejemplos

La función SQL First Value se puede utilizar con la cláusula Partition By. El uso de la cláusula Partition By permite a los desarrolladores agrupar el conjunto de retorno en subconjuntos más pequeños y aplicar la función First_Value() sobre estos subconjuntos particionados más pequeños.

Al igual que otras funciones analíticas de SQL Server, la función SQL First Value se presenta por primera vez a los programadores de SQL con la versión SQL Server 2012. En este tutorial de SQL, intentaré proporcionar ejemplos de códigos que muestren cómo usar la función analítica de SQL.

Sintaxis de la función SQL FIRST VALUE()

SELECT FIRST VALUE([Expression_Scalar ]) 
                  OVER (PARTITION_BY_Clausulua  
                         ORDER_BY_Clausula
                        )FROM [tabla]

Expresión escalar: es una expresión evaluada contra el valor de la primera fila de la partición ordenada de un conjunto de resultados.  Ese conjunto de resultado no puede ser una función de ventana.

PARTITION BY: Distribuye filas del conjunto de resultados en particiones donde se aplica la función FIRST VALUE (). Si omite la cláusula PARTITION BY, la función FIRST_VALUE () tratará todo el conjunto de resultados como una única partición.

ORDER BY: especifica el orden lógico de las filas en cada partición a la que se aplica la función FIRST VALUE ().

Veamos un ejemplo de FIRST_VALUE en SQL Server.

Entonces comenzaremos creando una base de datos para realizar las operaciones. Después creamos una tabla de muestra llamada EMPLEADO e insertamos algunos registros en la tabla, debajo el código para crear la tabla. S tiene una base de datos y una tabla con registro puede saltar este paso.

CREATE TABLE dbo.EMPLEADO
(EMPID INT PRIMARY KEY, 
EMP_DEPT VARCHAR(50), 
EMP_NOMBRE VARCHAR(30), 
EMP_SALARIO NUMERIC(9,2))

INSERT INTO dbo.EMPLEADO (
EMPID, EMP_DEPT, EMP_NOMBRE, EMP_SALARIO)
VALUES(
001, 'PRODUCCION', 'ROSA M', 75000.00),
(002, 'PRODUCCION', 'PEDRO MEJIA', 70000.00),
(003, 'PRODUCCION', 'ANA MERA', 75000.00),
(004, 'VENTAS', 'ROHAN B NARAYA', 45000.00),
(005, 'VENTAS', 'CAROLINA DAS', 40000.00),
(006, 'VENTAS', 'MANI PEREZ', 45000.00),
(007, 'PRODUCCION', 'RAISA SINGH', 78000.00),
(008, 'RH', 'MIGUEL KHAN',50000.00),
(009, 'RH', 'KARLA SINGH', 55000.00),
(010, 'RH', 'LAKSHYA RAWAT', 55000.00),
(011, 'PRODUCCION', 'MINO KUMAR', 75000.00),
(012, 'VENTAS', 'MARIA PEROZO', 40000.00),
(013, 'LOGISTICA', 'VINAY AGARWAL', 35000.00),
(014, 'LOGISTICA', 'MUSTAKIM PUJOOL', 35000.00),
(015, 'LOGISTICA', 'PERLA CABRERA', 45000.00)

Uso básico de la función SQL FIRST

En el siguiente ejemplo, la función SQL FIRST_VALUE () devuelve el nombre del empleado mejor pagado de toda la tabla, y si hay más de un empleado con el mismo salario, ordene el registro según el nombre del empleado en orden ascendente.

SELECT EMP_NOMBRE, EMP_SALARIO,
FIRST_VALUE(EMP_NOMBRE)
OVER (ORDER BY EMP_SALARIO DESC, EMP_NOMBRE )
AS MEJOR_SALARIO FROM EMPLEADO FIRST_VALUE

SQL FIRST

Como puede ver, el resultado de la declaración anterior devuelve el nombre del empleado mejor pagado en la columna FIRST_VALUE () contra cada fila. Esta función tiene un mejor uso cuando implementamos la clausula Partition By como en el ejemplo siguiente.

Función FIRST_VALUE con cláusula de partición 

En el siguiente ejemplo, la función SQL FIRST_VALUE () devuelve el nombre del empleado mejor pagado en cada departamento, y si más de un empleado para cualquier departamento tiene el mismo salario, ordene el registro según el nombre del empleado en orden ascendente.

SELECT EMP_DEPT, EMP_NOMBRE, EMP_SALARIO, 
FIRST_VALUE(EMP_NOMBRE)
OVER (PARTITION BY EMP_DEPT 
ORDER BY EMP_SALARIO DESC, EMP_NOMBRE) 
AS MEJOR_SALARIO 
FROM EMPLEADO FIRST_VALUE

SQL FIRST

Como puede ver, devuelve el nombre del empleado mejor pagado en cada departamento en cada fila.

También en el departamento de ventas hay dos empleados que reciben el mismo salario que es 45000, por lo que la clasificación se realiza en función de su nombre en orden ascendente, por eso MANISH viene primero.

Puntos importantes para usar la función SQL first 

  • La función SQL FIRST_VALUE () solo se aplica a un conjunto de resultados y no a una columna individual.
  •  SQL FIRST_VALUE () se utiliza en conjunción con una cláusula «ORDER BY» para asegurar que el primer resultado devuelto sea el que se espera.
  • La función SQL FIRST_VALUE () puede ser utilizada en conjunto con la función «DISTINCT» para devolver el primer valor único de un conjunto de resultados.
  • Es importante tener en cuenta que la función SQL FIRST_VALUE () solo devuelve el primer valor de un conjunto de resultados, no se puede especificar un numero especifico de filas para recuperar.
  • FIRST_VALUE () función de SQL Server para obtener el primer valor en una partición ordenada de un conjunto de resultados.

Deja un comentario