Non penso che tu possa farlo in SQL in modo efficiente. Un modo lento per farlo è qualcosa del tipo:
CREATE TEMPORARY TABLE tmp_table (...);
INSERT INTO tmp_table SELECT phone, max(rating) FROM table GROUP BY phone;
TRUNCATE table;
INSERT INTO table SELECT * FROM tmp_table;
Un modo migliore sarebbe una procedura memorizzata o uno script esterno. Seleziona tutte le righe dalla tabella ordinate per phone
ed esegui manualmente il raggruppamento/unione/eliminazione (ripeti i risultati, confronta con il phone
valore dalla riga precedente, se è diverso hai un nuovo gruppo, ecc.). La scrittura di stored procedure in MySQL è dolorosa, quindi non scriverò il codice per te. :)