Cette question est principalement posée lors de l'entretien aux candidats qui sont en première année ou qui ont 1 an d'expérience. Même cette question m'a été posée plusieurs fois lorsque j'étais venu dans le domaine du développement Web.
Je vais donc vous montrer quelques façons possibles de trouver le 2e ou le énième salaire le plus élevé.
Pour Exp :Table des employés (ET)
EID | Nom de l'employé | Salaire |
---|---|---|
1 | Employé-1 | 20 000 |
2 | Employé-2 | 22 000 |
3 | Employé-3 | 21 000 |
4 | Employé-4 | 19 000 |
5 | Employé-5 | 21 000 |
1 :- Comment trouver le nième salaire le plus élevé sans condition
Dans ce cas, vous pouvez utiliser les méthodes très basiques limit et max de sql
SELECT DISTINCT(Salary) FROM ET ORDER BY Salary DESC LIMIT n-1,1
Où n est la position que vous recherchez
Si n=2 la requête deviendra
SELECT DISTINCT(state_id) FROM crm_cities ORDER BY state_id DESC LIMIT 1,1
La sortie sera :21 000
2 :- Comment trouver le nième salaire le plus élevé lorsque la condition est que vous devez trouver tous les deuxièmes employés les mieux payés.
Dans ce cas, vous pouvez utiliser la fonction de sous-requête de sql.
SELECT Salary FROM ET WHERE Salary = (SELECT DISTINCT(Salary) FROM ET ORDER BY Salary DESC LIMIT n-1,1)
Où n est la position que vous recherchez
Si n=2 la requête deviendra
SELECT Salary FROM ET WHERE Salary = (SELECT DISTINCT(Salary) FROM ET ORDER BY Salary DESC LIMIT 1,1)
La sortie sera :21 000 , 21 000
3 :- Comment trouver le 2e salaire le plus élevé sans utiliser les conditions LIMIT.
Dans ce cas, vous pouvez utiliser les conditions NOT IN en sql
SELECT MAX(Salary) FROM ET WHERE Salary NOT IN (SELECT MAX(Salary) FROM ET)
La sortie sera :21 000
4 :- Comment trouver le 2e salaire le plus élevé sans utiliser LIMIT et Sub-Query
Dans ce cas, vous pouvez utiliser la méthode d'auto-jointure
SELECT MAX( E1.Salary ) FROM ET E1, ET E2 WHERE E1.Salary < E2.Salary Output will be: 21,000
J'espère que cela vous aidera à trouver la bonne réponse à votre besoin.. 🙂