E quale id vuoi?
1) select min(id), nome, max(data) from archivio group by nome
Questa soluzione da il risultato che hai indicato, ma non sono sicuro che sia quello che effettivamente ti serve. Infatti l'id e la data nel caso di Luca appartengono a due record diversi.
2)
select archivio.*
from archivio
join (
select max(data), nome from archivio group by nome
) as T1 on T1.nome = archivio.nome and T1.data = archivio.data
In questo caso estraggo i record con la data più recente per ogni nome, ma se lo stesso nome è inserito due volte con la stessa data allora uscirà due volte. Ora si tratta di capire come eliminare questi duplicati. Quale record ti interessa? Uno qualsiasi? Il primo? L'ultimo?
3)
select min(T2.id), T2.nome, T2.data
from (
....select archivio.*
....from archivio
....join (
........select max(data), nome from archivio group by nome
....) as T1 on T1.nome = archivio.nome and T1.data = archivio.data
) as T2
group by T2.nome, T2.data
Questo elimina i duplicati lasciati dalla soluzione 2, selezionando il primo record trovato (supponendo che siano in ordine di id).
ps: la soluzione di FantaRed non funzionerà con tutti i db perché non tutti consentono di estrarre valori non aggregati che non appartengono al raggruppamento. In ogni caso non credo sia corretto usare quel sistema perché non si dà al dbms alcuna informazione su quale record selezionare. Può andare bene quando si sa per certo che i dati dipendono da un valore raggruppato (ad esempio quando si raggruppa per la chiave primaria o una chiave naturale) ma questo non è il caso.
EDIT2:
la query di Marcantonio è sbagliata perché fa due test di uguaglianza che non sono legati in alcun modo. Con un contenuto come questo:
1 Luca 10/10/12
2 Luca 10/10/12
3 Marco 01/10/12
4 Marco 10/10/12
verrebbe estratto:
1 Luca 10/10/12
2 Luca 10/10/12 perché Luca c'è nella prima subquery e 10/10/12 nella seconda.
3 Marco 01/10/12
4 Marco 10/10/12 perché Marco c'è nella prima subquery e 10/10/12 nella seconda.
In definitiva credo che la mia sia l'unica che funziona indipendentemente dal db.
@Fabrizio: "se è vero che per ogni nome le date sono tutte diverse"... non è specificato dall'autore della domanda. La tua query è equivalente alla mia seconda soluzione, salvo che io uso una join e tu una subquery. Il dbms probabilmente le eseguirà nello stesso modo quindi scegliere l'una o l'altra è solo una questione di gusti.