0
votes

Comment trouver le salaire maximal des employés dans un département spécifique

J'ai une table nommée salaire code> contenant des salaires de l'employé dans divers départements: xxx pré>

J'ai besoin de trouver le salaire maximal de chaque département avec l'ID de département donné et le nom de cette personne avec un salaire maximum. P>

J'utilise la requête SQL suivante pour ce P> xxx pré>

mais le code ci-dessus me donne une erreur: dept_id doit être une expression globale ou apparaître dans le groupe par clause code> p>

Je suis capable d'obtenir facilement la table suivante avec cette requête ci-dessous: p>

dept_id     name     max_salary
12           e       500
13           f       600
14           d       400


0 commentaires

4 Réponses :


2
votes

Vous semblez apprendre à apprendre SQL, vous pouvez donc construire sur ce que vous avez. Ce qui suit obtient le salaire maximum: xxx pré>

Vous pouvez l'utiliser comme sous-requête, pour obtenir tous les noms correspondants: P>

select st.*
from SalaryTable st join
     (select dept_id, max(salary) as max_salary
      from SalaryTable
      group by dept_id
     ) std
     on st.dept_id = std.dept_id and
        st.salary = std.max_salary


1 commentaires

L'exigence est d'obtenir tous les employés et comme la déclaration de problème suggère d'obtenir uniquement les employés avec un salaire maximum.



1
votes

Utilisez la sous-requête corrélée

select dept_id, name, salary
from SalaryTable a 
   where salary =(select max(salary) from SalaryTable b where a.dept_id=b.dept_id)


0 commentaires

0
votes

Pour être exact:

SELECT dept_id, NAME, salary FROM SalaryTable a 
WHERE salary =(SELECT MAX(salary) FROM SalaryTable b WHERE a.dept_id=b.dept_id) 
ORDER BY dept_id;


0 commentaires

0
votes

Vous pouvez le faire sans exister: xxx pré>

Voir le Démo .
Résultats: P>

> dept_id | name | salary
> ------: | :--- | -----:
>      12 | e    |    500
>      13 | f    |    600
>      14 | d    |    400


0 commentaires