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

Langage SQL Discussion :

requête pour avoir min/max par intervales


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2002
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 225
    Points : 85
    Points
    85
    Par défaut requête pour avoir min/max par intervales
    bonjour

    J'ai une table qui contient les champs et données suivantes :

    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
     
     
    id                      date                   valeur 
    1                       11.01.2010          11
    1                       13.01.2010           14
    1                       14.01.2010            0
    1                       15.01.2010            0
    1                       16.01.2010            0
    1                       17.01.2010            4
    1                       18.01.2010            6 
    1                       19.01.2010            5
    1                       20.01.2010            0
    1                       21.01.2010            0
    1                       22.01.2010            5
    1                       23.01.2010            5
    1                       24.01.2010            2
    1                       25.01.2010            0
    1                       26.01.2010            0
    1                       27.01.2010            5
    1                       28.01.2010            5
    1                       29.01.2010            0
    1                       30.01.2010            5
    ..
    Je cherche à écrire une requête SQL pour ramener ,pour chaque intervalle ou la valeur est = 0, la date avant et la date après

    Exemple :
    on n'a que des valeurs = 0 entre le 14.01.2010 et 16.01.2010 : Je voudrais récupérer les deux dates 13.01.2010 et 17.01.2010

    résultat souhaité pour l'exemple ci-dessus:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    date_min                  date_max 
    13.01.2010                17.01.2010
    19.01.2010                22.01.2010
    24.01.2010                27.01.2010
    28.01.2010                30.01.2010
    Merci pour l'aide.

  2. #2
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut
    sur quel SGBD travailles tu?
    d'avoir Pensé à voter positivement pour ceux qui vous ont aidés et surtout à mettre si le cas.
    ça encourage.

  3. #3
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut
    bonjour;
    j'ai trouvé une solution utilisant ORACLE comme SGBD, un peu compliquée;
    si tu utilise un autre SGBD essaye de trouver l'équivalant de la fonction rownum.
    voici la requete.
    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
    select DATE_MINIMUM.date_min,DATE_MAXIMUM.date_max from 
     
    (select rownum nbre,t.* from 
     
                                (SELECT A.date_ date_min
                                FROM DATE_MIN_MAX  A, DATE_MIN_MAX  B
                                WHERE A.date_=B.date_-1 
                                AND A.valeur<>0 AND B.valeur=0
                                order by date_min)t
    )DATE_MINIMUM,
     
     
     
    (select rownum nbre,t.* from 
     
                              (SELECT B.date_ date_max
                              FROM DATE_MIN_MAX  A, DATE_MIN_MAX  B
                              WHERE A.date_=B.date_-1 
                              AND A.valeur=0 AND B.valeur<>0
                              order by date_max)t
     
     
     
    )DATE_MAXIMUM
     
    where DATE_MINIMUM.nbre=DATE_MAXIMUM.nbre

    soit DATE_MIN_MAX la table portant les données suivantes:
    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
    id                      date                   valeur 
    1                       11.01.2010          11
    1                       13.01.2010           14
    1                       14.01.2010            0
    1                       15.01.2010            0
    1                       16.01.2010            0
    1                       17.01.2010            4
    1                       18.01.2010            6 
    1                       19.01.2010            5
    1                       20.01.2010            0
    1                       21.01.2010            0
    1                       22.01.2010            5
    1                       23.01.2010            5
    1                       24.01.2010            2
    1                       25.01.2010            0
    1                       26.01.2010            0
    1                       27.01.2010            5
    1                       28.01.2010            5
    1                       29.01.2010            0
    1                       30.01.2010            5
    ..
    DATE_MAXIMUM et DATE_MINIMUM sont des aléas des sous-requetes .
    d'avoir Pensé à voter positivement pour ceux qui vous ont aidés et surtout à mettre si le cas.
    ça encourage.

Discussions similaires

  1. Requête pour avoir le max parmi les couples de résultat
    Par eprevot dans le forum Langage SQL
    Réponses: 3
    Dernier message: 03/12/2012, 19h10
  2. Réponses: 1
    Dernier message: 06/09/2011, 14h26
  3. mysqldump : Option pour avoir un INSERT par enregistrement
    Par jaymzwise dans le forum Administration
    Réponses: 1
    Dernier message: 30/08/2007, 20h41
  4. [MySQL] Requête pour avoir le descriptif de ma bdd
    Par lodan dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/07/2006, 16h21

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