Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Finden Sie das zweithöchste Gehalt auf bestmögliche Weise

Diese Frage wird meistens zum Zeitpunkt des Vorstellungsgesprächs von den Kandidaten gestellt, die Studienanfänger oder 1-jährige Erfahrung sind. Auch diese Frage wurde mir vielleicht mal gestellt, als ich im Bereich Webentwicklung anfing.

Deshalb werde ich Ihnen einige Möglichkeiten zeigen, wie Sie das zweithöchste oder n-thöchste Gehalt finden können.


Für Exp:Mitarbeitertabelle (ET)

EID Mitarbeitername Gehalt
1 Mitarbeiter-1 20.000
2 Mitarbeiter-2 22.000
3 Mitarbeiter-3 21.000
4 Mitarbeiter-4 19.000
5 Mitarbeiter-5 21.000

1:- So finden Sie das n-höchste Gehalt ohne Bedingung
In diesem Fall können Sie sehr einfache Limit- und Max-Methoden von SQL verwenden

SELECT DISTINCT(Salary) FROM ET ORDER BY Salary DESC LIMIT n-1,1

Wobei n die Position ist, nach der Sie suchen
Wenn n=2 Abfrage wird

SELECT DISTINCT(state_id) FROM crm_cities ORDER BY state_id DESC LIMIT 1,1

Ausgabe:21.000

2:- So finden Sie alle n-höchsten Gehälter, wobei die Bedingung lautet, dass Sie alle zweithöchstbezahlten Mitarbeiter finden müssen.
In diesem Fall können Sie die Unterabfragefunktion von SQL verwenden.

SELECT Salary FROM ET WHERE Salary = (SELECT DISTINCT(Salary) FROM ET ORDER BY Salary DESC LIMIT n-1,1)

Wobei n die Position ist, nach der Sie suchen
Wenn n=2 Abfrage wird

SELECT Salary FROM ET WHERE Salary = (SELECT DISTINCT(Salary) FROM ET ORDER BY Salary DESC LIMIT 1,1)

Die Ausgabe lautet:21.000 , 21.000

3:- Wie man das zweithöchste Gehalt findet, ohne LIMIT-Bedingungen zu verwenden.
In diesem Fall können Sie NOT IN-Bedingungen in SQL verwenden

SELECT MAX(Salary) FROM ET
WHERE Salary NOT IN (SELECT MAX(Salary) FROM ET)

Ausgabe:21.000

4:- So finden Sie das zweithöchste Gehalt ohne Verwendung von LIMIT und Sub-Query
In diesem Fall können Sie die Self-Join-Methode verwenden

SELECT MAX( E1.Salary ) FROM ET E1, ET E2 WHERE E1.Salary < E2.Salary
Output will be: 21,000

Ich hoffe, dies wird Ihnen helfen, die richtige Antwort für Ihre Bedürfnisse zu finden.. 🙂

Wenn Ihnen dieser Beitrag gefällt, vergessen Sie bitte nicht, Mein öffentliches Notizbuch für weitere nützliche Dinge zu abonnieren.