Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre averti

    Profil pro
    Inscrit en
    avril 2004
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 345
    Points : 431
    Points
    431

    Par défaut Choix entre group by ou over partition

    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

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Amateur
    Inscrit en
    février 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Amateur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : février 2017
    Messages : 6
    Points : 7
    Points
    7

    Par défaut

    Bonjour.

    Avec cette requête ça donne quoi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT id
         , login
         , COUNT(1) AS nb
      FROM utilisateur
    GROUP BY id
           , login
    HAVING COUNT(1) > 1

Discussions similaires

  1. Réponses: 5
    Dernier message: 01/07/2010, 16h28
  2. a href : choix entre OUVRIR ou TELECHARGER
    Par lepierre dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 21/06/2005, 15h51
  3. choix entre dbexpress et objet interbase
    Par hani dans le forum Bases de données
    Réponses: 5
    Dernier message: 19/11/2004, 00h09
  4. Conseille Choix entre MySQL et InterBase?
    Par Redhouane dans le forum Bases de données
    Réponses: 3
    Dernier message: 28/09/2004, 12h42
  5. choix entre macro et fonction
    Par remi77 dans le forum C
    Réponses: 4
    Dernier message: 22/10/2003, 15h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo