Consulta SQL de Oracle: recupere los valores más recientes por grupo en función del tiempo [duplicado]

Esta pregunta ya tiene una respuesta aquí:

Busca la fila que tiene el valor máximo para una columna 34 respuestas

Tengo la siguiente tabla en una base de datos Oracle

id     date              quantity
1      2010-01-04 11:00  152
2      2010-01-04 11:00  210
1      2010-01-04 10:45  132
2      2010-01-04 10:45  318
4      2010-01-04 10:45  122
1      2010-01-04 10:30  1
3      2010-01-04 10:30  214
2      2010-01-04 10:30  5515
4      2010-01-04 10:30  210

ahora me gustaría recuperar el último valor (y su hora) por ID. Ejemplo de salida:

id     date              quantity
1      2010-01-04 11:00  152
2      2010-01-04 11:00  210
3      2010-01-04 10:30  214
4      2010-01-04 10:45  122

Simplemente no puedo entender cómo poner eso en una consulta ...

Además, las siguientes opciones serían agradables:

Opción 1: la consulta solo debe devolver los valores de los últimos XX minutos.

Opción 2: la identificación se debe concatenar con el texto de otra tabla que tenga id y idname. la salida para id debería ser como: id-idname (por ejemplo, 1-testid1).

¡Muchas gracias por cualquier ayuda!