Bonjour,

Le but est de connaître les n-uplons selon un champ et récupérer un id, le login de l'utilisateur et le nombre :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
SELECT sub.id, sub.login, sub.nb
FROM (SELECT id, login, COUNT(*) OVER(PARTITION BY id) AS nb
      FROM utilisateur u) AS sub
WHERE nb > 1;
ou avec cette méthode :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
WITH n as (
    SELECT id, COUNT(id) AS nb
        FROM utilisateur u
        GROUP BY id
        HAVING COUNT(id) > 1
)
SELECT u.id, u.login, n.nb from UTILISATEUR u
    JOIN n ON u.id_ref = n.id_ref
Il y a quelques environ 40.000 lignes et 2000 lignes en doublons avec le même id.
Quelle méthode faudrait-il choisir ? J'ai regardé le plan d'exécution qui est différent mais les performances sont proches. La deuxième solution étant un peu plus rapide (5%).

Il existe peut-être une autre solution plus adaptée pour résoudre ce problème.

Merci de vos lumières