Consulta SQL do Oracle: recupera os valores mais recentes por grupo com base no tempo [duplicado]

Esta questão já tem uma resposta aqui:

Busque a linha que tem o valor Máximo de uma coluna 34 respostas

Eu tenho a tabela a seguir em um banco de dados 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

Agora eu gostaria de recuperar o valor mais recente (e seu tempo) por id. Exemplo de saída:

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

Eu simplesmente não consigo descobrir como colocar isso em uma consulta ...

Além disso, as seguintes opções seriam boas:

Opção 1: a consulta só deve retornar valores dos últimos XX minutos.

Opção 2: o id deve ser concatenado com o texto de outra tabela que tenha id e idname. saída para id deve ser assim: id-idname (por exemplo, 1-testid1).

Muito obrigado por qualquer ajuda!