Requête SQL de type select à l'aide de jointures, group by et les fonctions d'agrégation
J'ai deux tables avec les champs suivants
emp_table: emp_id, emp_name
salary_increase: emp_id, inc_date, inc_amount
Je suis dans l'obligation d'écrire une requête qui donne les détails de l'employé, le nombre de fois qu'un employé a reçu une augmentation de salaire, la valeur de l'augmentation maximale du montant et de la date de cette augmentation. Voici ce que j'ai à ce jour:
SELECT e.*, count(i.inc_amount), max(i.inc_amount)
FROM salary_increase AS i
RIGHT JOIN emp_table AS e
ON i.emp_id=e.emp_id
GROUP BY e.emp_id;
bien cela donne à toutes les exigences en dehors de la date à laquelle le montant maximal de l'augmentation a été attribué. J'ai essayé ce qui suit, sans succès:
SELECT e.*, count(i.inc_amount), max(inc_amount), t.inc_date
FROM salary_increase AS i
RIGHT JOIN emp_table AS e
ON i.emp_id=e.emp_id
RIGHT JOIN
(
SELECT emp_id, inc_date FROM salary_increase
WHERE inc_amount=max(inc_amount) GROUP BY emp_id
) AS t
ON e.emp_id=t.emp_id
GROUP BY e.emp_id;
cela donne une erreur "Invalid utilisation de la fonction de groupe'. Personne ne sait ce que je fais mal?
OriginalL'auteur StickyCube | 2013-12-15
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas faire ce
WHERE inc_amount=max(inc_amount)
dans la clause where, soit utiliserHAVING
ou de le faire dans la condition de jointure, essayez plutôt ceci:OriginalL'auteur Mahmoud Gamal