Suponiendo que create_time contiene la hora en que se creó el pedido y desea los 100 clientes con los últimos pedidos, puede:
- agregue create_time en su consulta más interna
- ordene los resultados de su consulta externa por el
create_time desc
- agregue una consulta más externa que filtre las primeras 100 filas usando
ROWNUM
Consulta:
SELECT * FROM (
SELECT * FROM (
SELECT
id,
client_id,
create_time,
ROW_NUMBER() OVER(PARTITION BY client_id ORDER BY create_time DESC) rn
FROM order
)
WHERE rn=1
ORDER BY create_time desc
) WHERE rownum <= 100
ACTUALIZACIÓN para Oracle 12c
Con la versión 12.1, Oracle introdujo Consultas Top-N "reales"
. Usando el nuevo FETCH FIRST...
sintaxis, también puede usar:
SELECT * FROM (
SELECT
id,
client_id,
create_time,
ROW_NUMBER() OVER(PARTITION BY client_id ORDER BY create_time DESC) rn
FROM order
)
WHERE rn = 1
ORDER BY create_time desc
FETCH FIRST 100 ROWS ONLY)