IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

SQL Oracle Discussion :

Requête pour récupérer 4 groupes d'enregistrements (NTILE ?)


Sujet :

SQL Oracle

  1. #1
    Membre régulier Avatar de H.ile
    Profil pro
    Architecte de système d'information
    Inscrit en
    Janvier 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Janvier 2008
    Messages : 122
    Points : 76
    Points
    76
    Par défaut Requête pour récupérer 4 groupes d'enregistrements (NTILE ?)
    Aloha,

    Je cherche à distribuer, pour chacune de mes valeurs ARCHIVAGE, dans 4 groupes, autant d'enregistrements que nécessaires pour obtenir 4 groupes dont les sommes de "NB_OBJ" sont identiques "peu ou prou".
    J'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT ARCHIVAGE,
           ENVIRONNEMENT,
           NB_OBJ,
           NTILE (4) OVER (PARTITION BY ARCHIVAGE ORDER BY NB_OBJ)
      FROM "H_ILE".NB_OBJ_BD;
    Mais cela "classe" les enregistrements en fonction de NB_OBJ et non distribue les objets.

    Quelqu'un a-t'il déjà fait ce genre de requête ?

    D'avance, merci,

    --------

    PS. Viens de m'apercevoir qu'il n'y a pas d'heure d'été sur ce forum

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    développeur Oracle
    Inscrit en
    Février 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Roumanie

    Informations professionnelles :
    Activité : développeur Oracle
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2014
    Messages : 27
    Points : 26
    Points
    26
    Par défaut
    Je crois que tu dois utiliser le suivant requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     SELECT ARCHIVAGE,
           ENVIRONNEMENT,
           NB_OBJ,
           NTILE (4) OVER (ORDER BY ARCHIVAGE)
      FROM "H_ILE".NB_OBJ_BD;
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      SELECT ARCHIVAGE,
           ENVIRONNEMENT,
           NB_OBJ,
           NTILE (4) OVER (PARTITION BY NB_OBJ ORDER BY ARCHIVAGE)
      FROM "H_ILE".NB_OBJ_BD;

  3. #3
    Membre régulier Avatar de H.ile
    Profil pro
    Architecte de système d'information
    Inscrit en
    Janvier 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Janvier 2008
    Messages : 122
    Points : 76
    Points
    76
    Par défaut
    Merci danvoiculet, mais cette requête ne répond pas à ma question. :/

    En fait, je cherche à grouper pour que les intervalles soient égaux.
    Un exemple
    ENVIRONNEMENT NB_OBJ GROUP
    A 5 4
    B 10 1
    C 3 3
    D 18 2
    E 15 3
    F 7 1
    Je cherche à ce que dans chacun des 4 groupes il y ait la même somme de NB_OBJ.
    J'ai beau retourné le problème, je ne sais pas comment faire. Pas plus que mes recherches sur les forums ne m'ont apporté de réponse

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par H.ile Voir le message
    "peu ou prou".
    Alors une première approche grossière, serait de calculer le modulo 4 d'un ROW_NUMBER ordonné selon la colonne NB_OBJ

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT 
           ENVIRONNEMENT,
           NB_OBJ,
           MOD(ROW_NUMBER() OVER(ORDER BY NB_OBJ) , 4) + 1 AS GROUPE
    FROM "H_ILE".NB_OBJ_BD

Discussions similaires

  1. [MySQL] Requêtes différentes pour récupérer un ou plusieurs enregistrements
    Par Dendrite dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 11/06/2008, 17h34
  2. [MySQL] Requête pour récupérer les 5 derniers enregistrement dans l'ordre croissant
    Par Jonathan.b dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 07/01/2008, 09h50
  3. Réponses: 4
    Dernier message: 05/12/2006, 20h13
  4. Requête pour récupérer le nom des champs
    Par legillou dans le forum JDBC
    Réponses: 1
    Dernier message: 08/02/2006, 16h09
  5. Réponses: 36
    Dernier message: 13/05/2004, 18h22

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