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 :

Récupérer la dernière ligne d'un GROUP BY


Sujet :

Langage SQL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 431
    Points : 172
    Points
    172
    Par défaut Récupérer la dernière ligne d'un GROUP BY
    Bonjour,

    Dans un exercice on me demande de récupérer le dernier salaire de tout les employés de l'entreprise.
    J'ai donc fais une requête qui me permet de récupérer les salaires de tous les employées depuis qu'ils sont dans l'entreprise.

    Voici ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT e.emp_no, s.salary, s.from_date
    FROM employees e
    JOIN salaries s ON e.emp_no = s.emp_no
    JOIN dept_emp de ON e.emp_no = de.emp_no
    GROUP BY e.emp_no, s.salary, s.from_date;
    Et voici ce que j'obtiens :

    Nom : requete-table-employees.png
Affichages : 80
Taille : 35,5 Ko

    Mais après je ne sais pas comment faire pour mettre les dates dans l'ordre descendant et ensuite récupérer la première ligne de chaque employé donc récupérer les lignes ou les dates sont les plus proche de 2024 donc par exemple ici les lignes à récupérer serai :
    10001 Georgi Facello 88958 2002-06-22,
    10002 Bezalel Simmel 72527 2001-08-02,
    10003 Parto Bamford 43699 2000-12-01.

    Merci d'avance.

  2. #2
    Membre confirmé Avatar de licardentaistor
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2021
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juillet 2021
    Messages : 316
    Points : 453
    Points
    453
    Par défaut
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT e.emp_no, fisrt_name,  last_name , s.salary, MAX(s.from_date) from_date
    FROM employees e
    JOIN salaries s ON e.emp_no = s.emp_no
    JOIN dept_emp de ON e.emp_no = de.emp_no
    GROUP BY e.emp_no, fisrt_name,  last_name , s.salary;

  3. #3
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select all emp_no, salary -- Récupère le salaire de la dernière paie
    from salaries
    where (emp_no, from_date) in (
        -- Récupère la dernière date de chaque salarié
        select all emp_no, max(from_date)
        from salaries
        group by 1
    );
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 617
    Points : 56 730
    Points
    56 730
    Billets dans le blog
    40
    Par défaut
    Bonsoir,

    à lire : Comment obtenir la ligne la plus récente de chaque groupe ?
    Le problème n'est pas seulement d'obtenir la date en question, mais l'ensemble des données relatives à la ligne la plus récente.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 431
    Points : 172
    Points
    172
    Par défaut
    Merci pour vos réponses.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 431
    Points : 172
    Points
    172
    Par défaut
    Merci Séb. pour ta solution qui répond exactement à ce que je cherchais.

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

Discussions similaires

  1. Identifier une ligne Excel en groupe ou sous-groupe
    Par gilles06 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 09/01/2008, 17h57
  2. Réponses: 8
    Dernier message: 03/07/2007, 18h26
  3. Connaitre le nombre de ligne dans un groupe
    Par lilou77 dans le forum BIRT
    Réponses: 4
    Dernier message: 13/06/2007, 15h27
  4. [SQL Server 2000/05] les n premieres lignes d'un group by
    Par pierre-o dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/06/2006, 12h25
  5. Compter nombre lignes générées par GROUP BY
    Par Trunks dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/03/2006, 16h52

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