SQL-Implementierung LeetCode (176. Zweithöchstes Gehalt)

SQL-Implementierung LeetCode (176. Zweithöchstes Gehalt)

[LeetCode] 176. Zweithöchstes Gehalt

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

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

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:
  • 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 von LeetCode (177. N-höchstes Gehalt)
  • SQL-Implementierung LeetCode (185. Top drei der höchsten Gehälter in der Abteilung)

<<:  Verwenden Sie h1-, h2- und h3-Tags angemessen

>>:  Implementierungsidee zur Linksausrichtung der letzten Zeile des Flexbox-Layouts

Artikel empfehlen

Detaillierte Prozessanalyse der Docker-Bereitstellung des Snail-Cinema-Systems

Umwelterklärung Host-Betriebssystem: Cetnos7.9 Mi...

MySQL-Datenbank Shell import_table Datenimport

Inhaltsverzeichnis MySQL Shell import_table Daten...

Detaillierte Erläuterung des adaptiven Anpassungsproblems des Vue-Mobilterminals

1. Erstellen Sie ein Projekt mit Vue UI 2. Wählen...

8 JS reduziert Verwendungsbeispiele und reduzierte Betriebsmethoden

reduce Methode ist eine Array-Iterationsmethode. ...

So erstellen Sie eine monatliche Tabelle in einer gespeicherten MySQL-Prozedur

Lassen Sie uns, ohne ins Detail zu gehen, direkt ...

Tutorial zu HTML-Tabellen-Tags (23): Zeilenrahmen-Farbattribut BORDERCOLORDARK

In Zeilen können dunkle Rahmenfarben individuell ...

Detaillierte Erklärung der GaussDB zur MySQL-Leistungsoptimierung

Inhaltsverzeichnis Hintergrund Inspiration kommt ...