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 :

Fonction aggrégation spéciale


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Points : 22
    Points
    22
    Par défaut Fonction aggrégation spéciale
    Bonjour,

    à partir d'un jeu de données comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    |---------------------------------------------
    | Date          |  Valeur à cette Date | EXTRACT(YEAR of Date)
    |---------------------------------------------
    | 19/02/2008 |     12                     | 2008                  
    |---------------------------------------------
    |15/01/2008  |     14                     | 2008                  
    |---------------------------------------------
    | 23/02/2007 |     11                     | 2007                  
    ----------------------------------------------
    | 22/07/2007 |     2                       | 2007                  
    ----------------------------------------------
    J'aimerais récupérer pour chaque année , la valeur la plus récente. C'est à dire la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    19/02/2008     12        2008  (car 19/02/2008 plus récent que 15/01/2008) 
    22/07/2007      2         2007  (car 22/07/2007 plus récent que  23/02/2007)
    Merci d'avance de votre aide

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    WITH t AS ( SELECT TO_DATE('19/02/2008','DD/MM/RRRR') AS dte, 12 AS nb, 2008 AS annee FROM dual
    UNION ALL SELECT TO_DATE('15/01/2008','DD/MM/RRRR') AS dte, 14 AS nb, 2008 AS annee FROM dual
    UNION ALL SELECT TO_DATE('23/02/2007','DD/MM/RRRR') AS dte, 11 AS nb, 2007 AS annee FROM dual
    UNION ALL SELECT TO_DATE('22/07/2007','DD/MM/RRRR') AS dte, 2 AS nb, 2007 AS annee FROM dual
    )
    SELECT annee, 
    		MAX(dte) KEEP (DENSE_RANK LAST ORDER BY dte) AS dte,
    		MAX(nb) KEEP (DENSE_RANK LAST ORDER BY dte) AS nb
    FROM t
    GROUP BY annee
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ANNEE	DTE	NB
    2007	22/07/2007	2
    2008	19/02/2008	12
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Points : 22
    Points
    22
    Par défaut
    A vrai dire j'ai bien une solution mais qui est un peu crado

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Points : 22
    Points
    22
    Par défaut
    Excellent Mcm.

    Merci 1000 fois.

  5. #5
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Après relecture, c'est pas terrible ce que j'ai fais sur dte, un simple max suffit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT annee, 
    		MAX(dte) AS dte,
    		MAX(nb) KEEP (DENSE_RANK LAST ORDER BY dte) AS nb
    FROM t
    GROUP BY annee
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par McM Voir le message
    Après relecture, c'est pas terrible ce que j'ai fais sur dte, un simple max suffit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT annee, 
    		MAX(dte) AS dte,
    		MAX(nb) KEEP (DENSE_RANK LAST ORDER BY dte) AS nb
    FROM t
    GROUP BY annee
    oui c'est vrai que c'est plus agréable à lire

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

Discussions similaires

  1. [XL-2007] Fonction "Choisir" spéciale
    Par Harry Covair dans le forum Excel
    Réponses: 5
    Dernier message: 01/07/2010, 22h35
  2. Fonction aggrégat pour la médiane et les quantiles
    Par bdkiller dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 06/04/2006, 14h27
  3. [version 8i] Fonctions d'aggrégation
    Par fdujardi2 dans le forum Oracle
    Réponses: 8
    Dernier message: 01/02/2006, 17h06
  4. Réponses: 7
    Dernier message: 07/12/2004, 10h18

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