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

PL/SQL Oracle Discussion :

Découper le résultat d'une requête


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 200
    Par défaut Découper le résultat d'une requête
    Bonsoir la team,

    je souhaiterais découper le résultat d'une requête de façon à avoir mon UID minimum, UID maximum pour chacun de ces bloc.

    Exemple:

    je sélectionne les lignes d'une table:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select *
    from MA_TABLE
    order by UID asc
    Résultat:

    ---------------------------
    -----------UID ----valeur--
    ---------------------------
    Ligne 1:___12______val1__
    Ligne 2:___26______val2__
    Ligne 3:___33______val3__
    Ligne 4:___46______val4__
    Ligne 5:___78______val5__
    Ligne 6:___108_____val6__

    Pour mon exemple, je souhaiterais découper par groupe de 2 et avoir le résultat
    suivant:

    --------------------------------
    -----------uid_min----uid_max---
    --------------------------------
    Ligne 1:____12________26_____
    Ligne 2:____33________46_____
    Ligne 3:____78________108____
    Avez-vous une idée de la requête à utiliser pour avoir ce résultat?

    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Essayez ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    With MA_TABLE as
    (
    select 1 as id,  12 as val from dual union all
    select 2      ,  26        from dual union all
    select 3      ,  33        from dual union all
    select 4      ,  46        from dual union all
    select 5      ,  78        from dual union all
    select 6      , 108        from dual
    )
      select min(val) as val_min
           , max(val) as val_max
        from ma_table
    group by floor((id-1)/2)
    order by floor((id-1)/2) asc;
     
       VAL_MIN    VAL_MAX
    ---------- ----------
            12         26
            33         46
            78        108

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 200
    Par défaut
    Cette requête fonctionne mais cela ne correspond pas exactement à ce que j'attend.
    En effet, ma table existant déjà, je n'ai pas les id.
    Or dans votre exemple, vous créez la table avec les id.
    Pouvez-vous m'expliquer svp?

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Il suffit de les recréer avec la fonction row_number() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    With MA_TABLE as
    (
    select 'val1' as valeur,  12 as "UID" from dual union all
    select 'val2'          ,  26          from dual union all
    select 'val3'          ,  33          from dual union all
    select 'val4'          ,  46          from dual union all
    select 'val5'          ,  78          from dual union all
    select 'val6'          , 108          from dual
    )
      ,  SR as
    (
    select row_number() over(order by valeur asc) as id,
           "UID"
      from ma_table
    )  
      select min("UID") as uid_min
           , max("UID") as uid_max
        from SR
    group by floor((id-1)/2)
    order by floor((id-1)/2) asc;
     
       UID_MIN    UID_MAX
    ---------- ----------
            12         26
            33         46
            78        108

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 200
    Par défaut
    oui voilà j'ai réussi à faire ma requête en utilisant la fonction analytique rownumber() et la fonction floor().
    Merci!!

    Berni.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Découper les résultats d'une requête
    Par Freedolphin dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 08/10/2012, 23h08
  2. Arrondir le résultat d'une requête
    Par wautierp dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/06/2004, 11h56
  3. Résultat d'une requête dans une variable...
    Par Hoegaarden dans le forum Bases de données
    Réponses: 6
    Dernier message: 28/04/2004, 13h51
  4. Résultat d'une requète SQL
    Par camino dans le forum Bases de données
    Réponses: 2
    Dernier message: 21/02/2004, 15h22
  5. [BDD] Enregistrer le résultat d'une requête
    Par Mowgly dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/06/2002, 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