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