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 :

Maximum date trié par un attribut


Sujet :

PostgreSQL

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 12
    Points : 13
    Points
    13
    Par défaut Maximum date trié par un attribut
    Bonjour,

    J'ai une table contenant entre autres un id, une date ( YYYY-MM-dd), et un attribut de type character varying:
    1, 2011-01-10, F1
    2, 2011-01-11, F1
    3, 2011-01-10, F2
    4, 2011-01-12, F2

    je voudrais donc récupérer les lignes qui ont une date la plus avancée pour chaque attribut.
    Donc ici :
    2, 2011-01-11, F1
    4, 2011-01-12, F2

    J'arrive bien à récupérer le couple date, attribut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select max(date),attribut from matable group by attribut
    mais je veux toute la ligne ( j'ai bien sûr d'autres attributs dans ma table).

    Si vous pouviez m'aidez

    Merci

  2. #2
    Membre expérimenté Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Points : 1 736
    Points
    1 736
    Par défaut
    Admettons que tes colonnes s'appellent c1,c2 et c3

    Si tu es en Postgresql 8.4 ou plus, tu peux utiliser les fonctions de fenêtrage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT c1,c2,c3 FROM
    (
    SELECT 
    RANK() OVER (PARTITION BY c3 ORDER BY c2 DESC) as rang,
    c1,
    c2,
    c3
    FROM la_table
    ) AS A
    WHERE A.rang = 1;
    Sinon il faut faire une sous-requête ce qui est un peu moins lisible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT t.c1, t.c2, t.c3 FROM t, 
    (
    SELECT 
    c3,max(c2) as max_c2
    from t
    group by c3
    ) as A
    where t.c2 = A.max_c2 and t.c3 = A.c3;
    Si tu as d'autres colonnes dans ta table, il faut les énumérer dans les select à côté de 'c1'

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 12
    Points : 13
    Points
    13
    Par défaut
    Parfait !!!

    la seconde solution est pour moi. Je vais exécuter cette requête en JPA.

    Merci !

  4. #4
    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 038
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 038
    Points : 23 783
    Points
    23 783
    Par défaut
    Ou encore une autre solution sans les sous-requêtes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT t1.c1, t1.c2, t1.c3 
    FROM t AS t1
    INNER JOIN t AS t2 ON t1.c3 = t2.c3
    GROUP BY t1.c1, t1.c2, t1.c3
    HAVING t1.c2 = MAX(t2.c2)

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

Discussions similaires

  1. [SQL-VBA]tri par date dans access
    Par Mickey_Mouse dans le forum VBA Access
    Réponses: 5
    Dernier message: 06/02/2007, 09h49
  2. Optimisation d'un tri par date
    Par padawa dans le forum Requêtes
    Réponses: 7
    Dernier message: 12/05/2006, 15h48
  3. requete : tri par date + groupement
    Par cbe dans le forum Requêtes
    Réponses: 8
    Dernier message: 08/01/2006, 19h30
  4. tri par date
    Par Digiduck dans le forum Requêtes
    Réponses: 5
    Dernier message: 06/06/2005, 21h51
  5. [ XML ][ XSL ] tri par date
    Par zozolh2 dans le forum XMLRAD
    Réponses: 6
    Dernier message: 26/08/2004, 10h19

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