SQL-Implementierung von LeetCode (177. N-höchstes Gehalt)

SQL-Implementierung von LeetCode (177. N-höchstes Gehalt)

[LeetCode] 177.N-höchstes Gehalt

Schreiben Sie eine SQL-Abfrage, um das n -te höchste Gehalt aus der Mitarbeitertabelle abzurufen.

+----+--------+
| ID | Gehalt |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+

Beispielsweise beträgt in der obigen Mitarbeitertabelle das n-höchste Gehalt bei n = 2 200. Wenn es kein n-höchstes Gehalt gibt, sollte die Abfrage null zurückgeben.

Diese Frage ist eine Erweiterung der vorherigen Frage zum zweithöchsten Gehalt. Basierend auf dem Ansatz der vorherigen Frage können wir sie leicht auf N erweitern. Gemäß der Analyse von Lösung 1 im zweithöchsten Gehalt müssen wir nur die 1 nach OFFSET in N-1 ändern. MySQL wird jedoch einen Fehler melden, wahrscheinlich weil es die Operation nicht unterstützt. Dann können wir ein SET N = N - 1 davor hinzufügen, um zuerst N in N-1 zu ändern und dann dasselbe zu tun:

Lösung 1:

Funktion erstellen getNthHighestSalary(N INT) gibt INT zurück
BEGINNEN
  Satz N = N - 1;
  ZURÜCKKEHREN (
      SELECT DISTINCT Gehalt FROM Mitarbeiter GROUP BY Gehalt
      ORDER BY Gehalt DESC LIMIT 1 OFFSET N
  );
ENDE

Laut der Analyse von Lösung 4 im zweithöchsten Gehalt müssen wir nur 1 in N-1 ändern. Hier unterstützen wir jedoch die Berechnung von N-1. Siehe den Code unten:

Lösung 2:

Funktion erstellen getNthHighestSalary(N INT) gibt INT zurück
BEGINNEN
  ZURÜCKKEHREN (
      SELECT MAX(Gehalt) FROM Mitarbeiter E1
      WO N - 1 =
      (SELECT COUNT(DISTINCT(E2.Gehalt)) FROM Mitarbeiter E2
      WO E2.Gehalt > E1.Gehalt)
  );
ENDE

Natürlich können wir auch das letzte > in >= ändern, sodass wir N-1 durch N ersetzen können:

Lösung 3:

Funktion erstellen getNthHighestSalary(N INT) gibt INT zurück
BEGINNEN
  ZURÜCKKEHREN (
      SELECT MAX(Gehalt) FROM Mitarbeiter E1
      WO N =
      (SELECT COUNT(DISTINCT(E2.Gehalt)) FROM Mitarbeiter E2
      WO E2.Gehalt >= E1.Gehalt)
  );
ENDE

Ähnliche Themen:

Zweithöchstes Gehalt

Quellen:

https://leetcode.com/discuss/88875/simple-answer-with-limit-and-offset

https://leetcode.com/discuss/63183/fastest-solution-without-using-order-declaring-variables

Dies ist das Ende dieses Artikels über die SQL-Implementierung von LeetCode (177. Das N-te höchste Gehalt). Weitere relevante Inhalte zur SQL-Implementierung des N-ten höchsten Gehalts finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • SQL-Implementierung von LeetCode (184. Das höchste Gehalt der Abteilung)
  • SQL-Implementierung von LeetCode (183. Kunden, die noch nie eine Bestellung aufgegeben haben)
  • SQL-Implementierung von LeetCode (182. Doppelte Postfächer)
  • SQL-Implementierung von LeetCode (181. Angestellte verdienen mehr als Manager)
  • SQL implementiert LeetCode (180. Fortlaufende Zahlen)
  • SQL-Implementierung von LeetCode (178. Punkterangliste)
  • SQL-Implementierung LeetCode (176. Zweithöchstes Gehalt)
  • SQL-Implementierung LeetCode (185. Top drei der höchsten Gehälter in der Abteilung)

<<:  Das englische Lesen verschiedener Sonderzeichen auf der Tastatur (Wissenspopularisierung)

>>:  Docker-Container erklärt ausführlich, wie man das Image vereinfacht und die Größe reduziert

Artikel empfehlen

Detaillierte Erklärung des CSS3-Rotationswürfelproblems

3D-Koordinatenkonzept Wenn sich ein Element dreht...

Vergleich der Leistung von int, char und varchar in MySQL

Im Internet kursieren viele scheinbar wahre „Gerü...

JS implementiert die zufällige Generierung von Bestätigungscodes

In diesem Artikelbeispiel wird der spezifische JS...

Detaillierte Erläuterung der Verwendung des DockerHub-Image-Repository

Bisher wurden die von uns verwendeten Images alle...

Eine kurze Diskussion über die VUE Uni-App-Entwicklungsumgebung

Inhaltsverzeichnis 1. Über die visuelle Schnittst...

So löschen Sie den Timer elegant in Vue

Inhaltsverzeichnis Vorwort Optimierung Ableitungs...

Automatische Dateisynchronisierung zwischen zwei Linux-Servern

Wenn Server B (172.17.166.11) eingeschaltet oder ...

Detaillierte Erklärung, wie MySQL Phantom-Lesevorgänge löst

1. Was ist Phantomlesen? Wenn bei einer Transakti...

Versteckter Overhead von Unix/Linux-Forks

Inhaltsverzeichnis 1. Der Ursprung der Gabel 2. F...

So installieren und verwenden Sie Ubuntu Docker

Inhaltsverzeichnis 1. Automatische Installation m...

Erläuterung zu JavaScript-Anti-Shake und -Throttling

Inhaltsverzeichnis Stabilisierung Drosselung Zusa...

Verwenden Sie Javascript, um eine dynamische QQ-Registrierungsseite zu erstellen

Inhaltsverzeichnis 1. Einleitung 1. Grundlayout 2...

Ubuntu führt regelmäßig Beispielcode eines Python-Skripts aus

Originallink: https://vien.tech/article/157 Vorwo...