Oracle/PLSQL: función ÚLTIMO_VALOR

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

Oracle/PLSQL: función ÚLTIMO_VALOR

Este tutorial de Oracle explica cómo usar Oracle/PLSQL ÚLTIMO_VALOR Funciones con sintaxis y ejemplos.

describir

La función LAST_VALUE de Oracle/PLSQL devuelve el último valor en un conjunto ordenado de valores de la ventana de análisis. Es similar a las funciones FIRST_VALUE y NTH_VALUE.

sintaxis

La sintaxis compatible con ANSI para la función LAST_VALUE en Oracle/PLSQL es:

LAST_VALUE (expression)
 [RESPECT NULLS | IGNORE NULLS]
 OVER ([query_partition_clause] [order_by_clause [windowing_clause]])

La siguiente sintaxis también es un formato aceptable:

LAST_VALUE (expression
 [RESPECT NULLS | IGNORE NULLS])
 OVER ([query_partition_clause] [order_by_clause [windowing_clause]])

parámetro o parámetro

expresión La columna o expresión para la que desea devolver el último valor. Respetar nulos | ignorar nulos opcional. Determina si incluir o ignorar valores NULL en los cálculos de la ventana de análisis. Si se omite este parámetro, el valor predeterminado es RESPECT NULLS, que incluye valores NULL. cláusula_partición_consulta Opcional. Se utiliza para dividir los resultados en grupos basados ​​en una o más expresiones. order_by_clause opcional. Se utiliza para ordenar los datos dentro de cada partición. cláusula_de_ventana

Electivo. Determina qué líneas en la ventana de análisis evaluar, es importante usar la cláusula de ventana correcta, de lo contrario, puede obtener resultados inesperados. Puede ser un valor como:

cláusula_de_ventana describir
El rango entre la línea anterior ilimitada y la línea actual La última línea de la ventana cambia con la línea actual (predeterminado)
El rango entre la línea actual y sin límites a continuación La primera fila de la ventana cambia con la fila actual
Rango entre anverso ilimitado y reverso ilimitado Todas las líneas se incluyen en la ventana, independientemente de la línea actual

devolver los bienes

La función LAST_VALUE devuelve el último valor de un conjunto ordenado de valores de la ventana de análisis.

aplicar para

La función LAST_VALUE está disponible en las siguientes versiones de Oracle/PLSQL:

  • Oráculo 12c, Oráculo 11g, Oráculo 10g, Oráculo 9i

Ejemplo de DDL/DML

Si desea seguir este tutorial, obtenga DDL para crear las tablas y DML para completar los datos. ¡Entonces pruebe los ejemplos en su propia base de datos!

ejemplo

Veamos algunos ejemplos de la función LAST_VALUE de Oracle y exploremos cómo usar la función LAST_VALUE en Oracle/PLSQL.

Salario máximo para todos los empleados.

Comencemos con un ejemplo simple, usando la función LAST_VALUE para devolver el salario más alto en la tabla de empleados. En este ejemplo, no necesitamos query_partition_clause porque estamos evaluando toda la tabla de empleados.

En este ejemplo, tenemos una tabla llamada empleados con los siguientes datos:

EMPLOYEE_ID  LAST_NAME  FIRST_NAME  SALARY  DEPT_ID
-----------  ---------  ----------  ------  -------
       1000  Jackson    Joe         2000    10
       2000  Smith      Jane        3500    10
       3000  Ferguson   Samantha    1900    10
       4000  Reynolds   Allen       4000    20
       5000  Anderson   Paige       3250    20
       6000  Johnson    Derek       2750    20
       7000  Nelson     Sarah       5000    30
       8000  Burke      Russell     1500    30

Para encontrar el salario más alto, ingrese la siguiente instrucción SELECT:

SELECT DISTINCT LAST_VALUE(salary)
 OVER (ORDER BY salary ASC
       RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
       AS "HIGHEST"
FROM employees;

Estos son los resultados que deberías ver:

HIGHEST
-------
   5000

En este ejemplo, LAST_VALUE devuelve el valor de salario más alto especificado por LAST_VALUE(salary)La ventana de análisis ordenará los datos por salario en orden ascendente especificado ORDER BY salary ASC. Esta RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING windowing_clause se usa para garantizar que todas las filas se incluyan independientemente de la fila actual.

Y como queremos el salario más alto para la tabla, no necesitamos incluir query_partition_clause para particionar los datos.

Salario máximo para Dept_id

Ahora le mostraremos cómo usar la función LAST_VALUE con query_partition_clause. En el siguiente ejemplo, devolvamos el salario más alto para dept_id 10 y 20.

Según la misma tabla de empleados, ingrese la siguiente instrucción SQL:

SELECT DISTINCT dept_id, LAST_VALUE(salary)
 OVER (PARTITION BY dept_id ORDER BY salary ASC
       RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
       AS "HIGHEST"
FROM employees
WHERE dept_id in (10,20)
ORDER BY dept_id;

Estos son los resultados que deberías ver:

DEPT_ID  HIGHEST
-------  -------
     10     3500
     20     4000

En este ejemplo, LAST_VALUE devuelve el valor de salario más alto especificado por LAST_VALUE(salary)La ventana de análisis dividirá los resultados por dept_id y ordenará los datos por salario en orden ascendente especificado PARTITION BY dept_id ORDER BY salary ASC.

Salario mínimo para Dept_id

Ahora le mostraremos cómo usar la función LAST_VALUE para devolver el salario mínimo para dept_id 10 y 20.

Según los datos de la tabla de empleados nuevamente, ingrese la siguiente instrucción SQL:

SELECT DISTINCT dept_id, LAST_VALUE(salary)
 OVER (PARTITION BY dept_id ORDER BY salary DESC
       RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
       AS "LOWEST"
FROM employees
WHERE dept_id in (10,20)
ORDER BY dept_id;

Estos son los resultados que deberías ver:

DEPT_ID  LOWEST
-------  ------
     10    1900
     20    2750

En este ejemplo, hemos cambiado el orden de clasificación a descendente por la partición especificada PARTITION BY dept_id ORDER BY salary DESC Ahora obtenemos el salario mínimo basado en dept_id.