extrayendo las entradas más recientes para cada grupo en Oracle SQL
Este tutorial demuestra una tarea de base de datos común: recuperar el registro más reciente para cada grupo basado en una marca de tiempo. Usaremos una tabla que contiene ID, marcas de tiempo y cantidades como ejemplo.
Desafío:
dada una tabla con id, columnas de Timestamp ("Date") y cantidad ("Cantidad"), ¿Cómo seleccionamos eficientemente la última cantidad (y su marca de tiempo asociada) para cada identificación única?
Solución:
Esto se puede lograr usando el siguiente enfoque:
La siguiente consulta de Oracle SQL implementa esta solución:
SELECT x.id, x."date", x.quantity
FROM (
SELECT
id,
"date",
RANK() OVER (PARTITION BY id ORDER BY "date" DESC) AS rnk,
quantity
FROM qtys
) x
WHERE x.rnk = 1;
extendiendo la consulta:
Esta consulta básica se puede adaptar para satisfacer las necesidades más complejas:
a la consulta interna para restringir los resultados a un período de tiempo específico.
. Por ejemplo, puede unirse a una tabla que contiene ID y nombre para incluir nombres en la salida.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3