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

Requêtes MySQL Discussion :

group by/max peut etre


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Points : 86
    Points
    86
    Par défaut group by/max peut etre
    Salut,
    J'ai une table Salaire avec un ID, la date, l'employé et le montant :

    1;20130101;bob;1000€
    2;20130201;bob;1100€
    3;20130301;bob;1100€
    4;20130101;toto;2000€
    5;20130201;toto;2100€
    6;20130301;toto;2100€
    7;20130201;titi;3000€
    8;20130301;titi;3100€
    9;20130401;titi;3100€

    J'ai besoin de faire une requete qui va sortir le derniere salaire (basé sur la date la plus avancé donc) de chaque personne et me retourner ceci :

    3;20130301;bob;1100€
    6;20130301;toto;2100€
    9;20130401;titi;3100€

    Une idée comment faire ?

    Merci

  2. #2
    Nouveau Candidat au Club
    Inscrit en
    Mars 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT TABLE.ID,
           MAX(TABLE.Date),
           TABLE.Employe,
           TABLE.Salaire
      FROM BASE.TABLE TABLE
    GROUP BY TABLE.Employe

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    Par défaut
    Bonjour,

    je pense que cette requête devrait fonctionner :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT ID, employe, laDate, montant
    FROM maTable
    WHERE (employe, laDate) IN (
    	SELECT employe, MAX(laDate)
    	FROM maTable
    	GROUP BY employe
    )
    une réponse vous a permis d'avancer ?

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Mars 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Oui, effectivement c'est mieux comme ça. Oubliez ma réponse, elle ne marche pas.

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Points : 86
    Points
    86
    Par défaut
    désolé pour mon retard...

    Exia93, merci ca fonctionne par contre j'ai un enorme probleme de perf. la requet met 1min30 pour me retourner 400 lignes... une idée pour expliquer une telle lenteur, et comment y parer ?

  6. #6
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Points : 86
    Points
    86
    Par défaut
    pour ceux que ça pourraient intéresser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT REP_Salaires.ID, IDuser, date 
    FROM REP_Salaires 
    WHERE date = (
    SELECT max(date) from REP_Salaires AS SalaireA WHERE SalaireA.IDuser = REP_Salaires.IDuser
    );
    cette requête va environ 100x plus vite que celle proposée plus haut et retourne évidement la même chose.

Discussions similaires

  1. Encore un max? peut etre pas
    Par KamaShin dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/06/2007, 16h44
  2. Réponses: 3
    Dernier message: 06/06/2006, 17h15
  3. Réponses: 8
    Dernier message: 11/08/2005, 09h32
  4. EDBEngineError : "... ne peut etre utilisee avec ce pil
    Par Dev_Michael dans le forum Bases de données
    Réponses: 1
    Dernier message: 16/03/2005, 15h15

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