Bonjour

J'ai une table avec 3 champs : id1(Number), id2(Number) et score(Number).

Pour un id1 donné, je voudrais garder uniquement les 5 lignes ayant le score le plus élevé, donc supprimer toutes les autres.

En théorie c'est tout bête, mais maintenant faut pondre la requête qui le fait et ça devient plus compliqué...

Je pense qu'il faut partir sur une requete utilisant une clause any comme cette requête que SQLPro a écrit pour supprimer les doublons d'une table :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 DELETE FROM Table t1
         WHERE t1.id1 < ANY ( SELECT t2.id1
                                            FROM Table t2
                                           WHERE t2.id1 <> t1.id1
                                               AND t2.champ = t1.champ
                                        );
Mais je ne vois pas vraiment comment faire... Quelqu'un se serait-il déjà penché sur la problématique ? Auriez-vous une idée sur la façon de procéder ?

Merci à vous

David

Edit : je suis sous Oracle 10gR2