bonjour,
je cherche à écrire une requête sql assez proche de celle qu'on peut trouver là -> http://sqlcourse2.com/groupby.html
à savoir :
SELECT max(salary), dept
FROM employee
GROUP BY dept;
qui retourne la liste des salaires les plus élevés dans chaque département. Ce que je veux c'est également obtenir le nom de ceux à qui correspondent ces salaires.
La requète suivante
SELECT lastname, max(salary), dept
FROM employee
GROUP BY dept;
ne retourne évidemment pas le nom qui correspond au salaire maximum et pourtant c'est ce que je voudrait
voilà. Si quelqu'un à une solution à me proposer je le remercie par avance
# Re: requête SQL
Posté par Vincent ORDY . Évalué à 2.
Bonne chance
[^] # Re: requête SQL
Posté par Vincent ORDY . Évalué à 3.
SELECT dept, salary, lastname
FROM employee A
WHERE (dept, salary) =
(SELECT dept, MAX(salary)
FROM employee B
WHERE A.deptv = B.dept
GROUP BY dept)
[^] # Re: requête SQL
Posté par metcox . Évalué à 1.
j'ignorais qu'on pouvait faire des comparaisons sur des n-uplets comme ça. D'ailleurs ça marche pas sur le site web ou j'ai pris l'exemple (peut-être une limitation). Vais regarder ça de plus près.
merci
[^] # Re: requête SQL
Posté par metcox . Évalué à 1.
[^] # Re: requête SQL
Posté par Vincent ORDY . Évalué à 1.
[^] # Re: requête SQL
Posté par Moogle . Évalué à 2.
SELECT lastname, salary, dept
FROM employee
GROUP BY dept
HAVING salary = MAX(salary)
[^] # Re: requête SQL
Posté par metcox . Évalué à 1.
Avec la table suivante:
dept....lastname.....salary
1..........joe................100.00
1..........william.........50.00
2..........jack...............30.00
2..........averell..........80.00
SELECT lastname, salary, dept
FROM employee
GROUP BY dept
va retourner
1..........joe................100.00
2..........jack...............30.00
et
SELECT lastname, salary, dept
FROM employee
GROUP BY dept
HAVING salary = MAX(salary)
va retourner
1..........joe................100.00
là ou salary est effectivement égal au salaire max du departement mais sur le resultat de la requete sans le having
ce que je veux obtenir c'est
1..........joe................100.00
2..........averell..........80.00
c'est presque ça :) merci
# Manque une partie dans le group by...
Posté par Gyro Gearllose . Évalué à 2.
SELECT lastname, max(salary), dept
FROM employee
GROUP BY lastname, dept;
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.