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

PostgreSQL Discussion :

Calcul de valeur consécutives


Sujet :

PostgreSQL

  1. #1
    Membre habitué Avatar de budtucker
    Profil pro
    Développeur multimédia
    Inscrit en
    Avril 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Avril 2007
    Messages : 176
    Points : 197
    Points
    197
    Par défaut Calcul de valeur consécutives
    Bonjour,

    Je recherche le moyen en Postgre de détecter les valeurs continues.

    J'ai mes données du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Id_pers      Debut    Fin
    PERS01        100        199
    PERS01        200        250
    PERS01        400        500
    PERS02        800        859
    PERS02        860        900
    PERS03        200        590
    PERS03        591        600
    PERS03        601        650
    PERS03        10000    20000
    Le but est d'obtenir à la fin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Id_pers        Debut    Fin
    PERS01        100        250
    PERS01        400        500
    PERS02        800        900
    PERS03        200        650
    PERS03        10000    20000
    Sud04

  2. #2
    Membre habitué Avatar de budtucker
    Profil pro
    Développeur multimédia
    Inscrit en
    Avril 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Avril 2007
    Messages : 176
    Points : 197
    Points
    197
    Par défaut
    P'tit up !!

    Personne ???
    Sud04

  3. #3
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Salut,

    Bon, voilà une requête qui fait ce que tu souhaites à partir de l'exemple que tu as donné (j'ai nommé la table table1, original non ) :
    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
    select Id_pers, min(Debut), max(Fin)
    from
    (select t1.Id_pers, t1.Debut, t2.Fin
    from table1 t1
    inner join table1 t2 on t1.Id_pers = t2.Id_pers and t1.Fin = t2.Debut - 1
    where exists (select 1
    from table1 t3
    where t3.Id_pers = t1.Id_pers
    and t3.Debut = t1.Fin + 1)) as T
    group by Id_pers
    union all
    select t1.Id_pers, Debut, Fin
    from table1 t1
    where not exists (select 1
    from table1 t3
    where t3.Id_pers = t1.Id_pers
    and t3.Debut = t1.Fin + 1)
    and not exists (select 1
    from table1 t4
    where t4.Id_pers = t1.Id_pers
    and t4.Fin = t1.Debut - 1)
    order by 1, 2, 3
    Comme tu peux le voir, c'est pas évident et sûrement pas optimisé , mais ça fait ce que tu souhaites (enfin je crois ).
    Il y a deux parties séparées par un union.
    Dans la première partie, je regroupe pour un même Id_pers les lignes dont Debut et Fin se suivent, puis j'en sort le min des débuts et le max des fins.
    Dans la seconde partie, je sélectionne les lignes qui n'ont pas de ligne consécutive en terme de début ou de fin avant ou après elles.

    En espérant que ça t'aide...

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  4. #4
    Membre habitué Avatar de budtucker
    Profil pro
    Développeur multimédia
    Inscrit en
    Avril 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Avril 2007
    Messages : 176
    Points : 197
    Points
    197
    Par défaut
    Je te remercie. Je vais voir ça !!!

    A+
    Sud04

  5. #5
    Membre habitué Avatar de budtucker
    Profil pro
    Développeur multimédia
    Inscrit en
    Avril 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Avril 2007
    Messages : 176
    Points : 197
    Points
    197
    Par défaut
    le résultat donne la même valeur min et max pour chaque occurence.

    Pas grave !! Je l'ai refais "à la dur" en php !!

    Merci,

    A+
    Sud04

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

Discussions similaires

  1. Calcul d'un nombre de valeurs consécutives
    Par AstridG dans le forum SAS Base
    Réponses: 1
    Dernier message: 06/12/2010, 21h50
  2. Calcul de valeurs propres
    Par Andrey dans le forum Pascal
    Réponses: 6
    Dernier message: 11/02/2007, 23h20
  3. Problème champs calculés et valeur null
    Par markintell dans le forum Access
    Réponses: 18
    Dernier message: 10/01/2006, 18h14
  4. Réponses: 6
    Dernier message: 22/11/2005, 17h08
  5. [Debutant]calcul de valeurs propres, givens-householder
    Par malbarre dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 18/08/2005, 16h40

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