[LeetCode] 176. Zweithöchstes GehaltSchreiben Sie eine SQL-Abfrage, um das zweithöchste Gehalt aus der Mitarbeitertabelle abzurufen.
Beispielsweise beträgt in der obigen Mitarbeitertabelle das zweithöchste Gehalt 200. Wenn es kein zweithöchstes Gehalt gibt, sollte die Abfrage null zurückgeben. Diese Frage fordert uns auf, die zweitgrößte Zahl in einer Spalte einer Tabelle zu finden. Es gibt viele Möglichkeiten, dieses Problem zu lösen. Sehen wir uns zunächst eine Lösung mit den beiden Schlüsselwörtern Limit und Offset an. Die Zahl nach Limit in MySQL begrenzt die Anzahl der Daten, die wir zurückgeben, und Offset ist der Offset. Wenn wir also das zweithöchste Gehalt finden möchten, können wir die Gehälter zuerst in absteigender Reihenfolge sortieren und dann Offset auf 1 setzen, was bedeutet, dass wir beim zweiten beginnen, also beim zweithöchsten Gehalt, und dann Limit auf 1 setzen, was bedeutet, dass nur das zweithöchste Gehalt herausgenommen wird. Wenn Limit auf 2 gesetzt ist, werden sowohl das zweit- als auch das dritthöchste Gehalt herausgenommen: Lösung 1: SELECT Gehalt FROM Mitarbeiter GROUP BY Gehalt UNION ALL (SELECT NULL AS Gehalt) ORDER BY Gehalt DESC LIMIT 1 OFFSET 1; Wir können auch die Max-Funktion verwenden, die den Maximalwert zurückgibt. Die Logik besteht darin, dass wir den Maximalwert der Zahlen herausnehmen, die den Maximalwert nicht enthalten, also den zweitgrößten Wert: Lösung 2: SELECT MAX(Gehalt) FROM Mitarbeiter WO Gehalt NICHT IN (SELECT MAX(Gehalt) FROM Mitarbeiter); Die folgende Methode ist grundsätzlich die gleiche wie oben, außer dass anstelle des Schlüsselworts „Nicht in“ das Kleiner-als-Zeichen < verwendet wird und die Wirkung die gleiche ist: Lösung 3: SELECT MAX(Gehalt) FROM Mitarbeiter Wo Gehalt < (SELECT MAX(Gehalt) FROM Mitarbeiter); Zum Schluss schauen wir uns noch eine Methode an, die erweitert werden kann, um das N-te höchste Gehalt zu finden. Ersetzen Sie einfach die 1 in der folgenden Anweisung durch N-1. Das zweithöchste Gehalt ist 1, wenn N-1 eingesetzt wird. Die Logik der folgenden Anweisung ist, dass wir, wenn wir das zweithöchste Gehalt finden möchten, einen der Maximalwerte zulassen und dann den größten Wert unter den verbleibenden Zahlen finden, der der zweitgrößte Wert des Ganzen ist. Lösung 4: SELECT MAX(Gehalt) FROM Mitarbeiter E1 WO 1 = (SELECT COUNT(DISTINCT(E2.Gehalt)) FROM Mitarbeiter E2 WO E2.Gehalt > E1.Gehalt); Quellen: https://leetcode.com/discuss/47041/sehr-sehr-einfache-lösung https://leetcode.com/discuss/42849/general-solution-not-using-max https://leetcode.com/discuss/21751/simple-query-which-handles-the-null-situation Dies ist das Ende dieses Artikels über die SQL-Implementierung von LeetCode (176. Das zweithöchste Gehalt). Weitere relevante Inhalte zur SQL-Implementierung des zweithö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:
|
<<: Verwenden Sie h1-, h2- und h3-Tags angemessen
>>: Implementierungsidee zur Linksausrichtung der letzten Zeile des Flexbox-Layouts
Umwelterklärung Host-Betriebssystem: Cetnos7.9 Mi...
1. Entpacken Sie die Datei in das aktuelle Verzei...
Inhaltsverzeichnis MySQL Shell import_table Daten...
1. Erstellen Sie ein Projekt mit Vue UI 2. Wählen...
reduce Methode ist eine Array-Iterationsmethode. ...
Routensprung dies.$router.push('/kurs'); ...
Was ist der Eingabetyp="Datei"? Ich glau...
Besonderer Hinweis: Es wird nur die Swoole-Erweit...
Wie in der Abbildung gezeigt: Tabellendaten Wie e...
[ Linux-Installation von Tomcat8 ] Tomcat deinsta...
Lassen Sie uns, ohne ins Detail zu gehen, direkt ...
In Zeilen können dunkle Rahmenfarben individuell ...
Inhaltsverzeichnis Hintergrund Inspiration kommt ...
Als PHP7 herauskam, habe ich als Fan der neuesten...
getElementById kann das Objekt nicht abrufen Beim...