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

Contribuez Oracle Discussion :

Partager avec vous la méthode Tabibitosan


Sujet :

Contribuez Oracle

  1. #1
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Points : 1 197
    Points
    1 197
    Par défaut Partager avec vous la méthode Tabibitosan
    Bonjour,

    Ce message est pour partager avec vous la méthode Tabibitosan, cette méthode consiste à grouper les données selon différents critères.

    Exemple :

    On veut créer des groupes de prêts (Loan) qui ont des numéros de prêt consécutifs (les numéros de prêt (loan_id) 1, 2,3 forment le groupe 1, le 7 forme le groupe 2, les 10 et le 11 forment le groupe 3)

    Le contenu de la table
    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
     
    WITH loan AS
         (SELECT 1 loan_id, 'xxx' bn
            FROM DUAL
          UNION ALL
          SELECT 2 loan_id, NULL borrower_name
            FROM DUAL
          UNION ALL
          SELECT 3 loan_id, NULL borrower_name
            FROM DUAL
          UNION ALL
          SELECT 7 loan_id, 'ac' borrower_name
            FROM DUAL
          UNION ALL
          SELECT 10 loan_id, 'ac' borrower_name
            FROM DUAL
          UNION ALL
          SELECT 11 loan_id, NULL borrower_name
            FROM DUAL)
    La requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    SELECT   loan_id, bn, 'G' || DENSE_RANK () OVER (ORDER BY makegroup) grp_id
        FROM (SELECT loan_id, bn,
                     loan_id - ROW_NUMBER () OVER (ORDER BY loan_id) AS makegroup
                FROM loan)
    ORDER BY loan_id;

    La demonstration:
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
     
    12:24:38 Scott@WEBDEVP>WITH loan AS
    12:24:41   2       (SELECT 1 loan_id, 'xxx' bn
    12:24:41   3          FROM DUAL
    12:24:41   4        UNION ALL
    12:24:41   5        SELECT 2 loan_id, NULL borrower_name
    12:24:41   6          FROM DUAL
    12:24:41   7        UNION ALL
    12:24:41   8        SELECT 3 loan_id, NULL borrower_name
    12:24:41   9          FROM DUAL
    12:24:41  10        UNION ALL
    12:24:41  11        SELECT 7 loan_id, 'ac' borrower_name
    12:24:41  12          FROM DUAL
    12:24:41  13        UNION ALL
    12:24:41  14        SELECT 10 loan_id, 'ac' borrower_name
    12:24:41  15          FROM DUAL
    12:24:41  16        UNION ALL
    12:24:41  17        SELECT 11 loan_id, NULL borrower_name
    12:24:41  18          FROM DUAL)
    12:24:41  19  SELECT   loan_id, bn, 'G' || DENSE_RANK () OVER (ORDER BY makegroup) grp_id
    12:24:41  20      FROM (SELECT loan_id, bn,
    12:24:41  21                   loan_id - ROW_NUMBER () OVER (ORDER BY loan_id) AS makegroup
    12:24:41  22              FROM loan)
    12:24:41  23  ORDER BY loan_id;
     
       LOAN_ID BN  GRP_ID
    ---------- --- -----------------------------------------
             1 xxx G1
             2     G1
             3     G1
             7 ac  G2
            10 ac  G3
            11     G3
     
    6 ligne(s) sélectionnée(s).
     
    12:24:43 Scott@WEBDEVP>

    Pour plus ample informations sur la méthode Tabibitosan, Veuillez consulter le lien suivant:

    https://forums.oracle.com/forums/thr...art=0&tstart=0


    Cordialement Salim.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 811
    Points
    17 811
    Par défaut
    Je ne connaissais pas le nom, mais dès qu'un problème de rupture, de création de plage apparaît c'est très souvent une solution performante.

    Je m'en étais servi par exemple sur ces sujets :
    http://www.developpez.net/forums/d97...enation-dates/
    http://www.developpez.net/forums/d99...ction-rupture/

    Merci salim11 !

Discussions similaires

  1. connexion à un partage avec différents comptes
    Par lololabricole dans le forum Sécurité
    Réponses: 11
    Dernier message: 16/04/2007, 02h59
  2. XP Pro : dossier partager avec 2000
    Par pierrot10 dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 02/05/2006, 16h22
  3. Réponses: 3
    Dernier message: 13/04/2006, 14h08

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