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.