Mysql
 sql >> Base de données >  >> RDS >> Mysql

Trouver le 2e salaire le plus élevé de la meilleure façon possible

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.. 🙂

Si vous aimez cet article, n'oubliez pas de vous abonner à My Public Notebook pour plus d'informations utiles.