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

Anwendungsverschachtelung von HTML-ul-ungeordneten Tabellen

Anwendungsschachtelung ungeordneter Listen Code ko...

4 Lösungen für MySQL-Import-CSV-Fehler

Dies soll an die 4 Fallstricke erinnern, in die i...

So verwenden Sie vs2019 für die Linux-Remote-Entwicklung

Normalerweise gibt es bei der Entwicklung von Lin...

CocosCreator implementiert Skill-Kühleffekt

CocosCreator realisiert Skill-CD-Effekt In vielen...

Die Funktionen und Unterschiede zwischen deaktiviert und schreibgeschützt

1: schreibgeschützt dient zum Sperren dieses Steue...

Was macht die MySQL-Datenbank?

MySQL ist ein relationales Datenbankverwaltungssy...

Einige gängige CSS-Layouts (Zusammenfassung)

Zusammenfassung In diesem Artikel werden die folg...

Verwendung des Linux-Befehls „cal“

1. Befehlseinführung Mit dem Befehl cal (Kalender...

Erstellen eines Image-Servers mit FastDFS unter Linux

Inhaltsverzeichnis Serverplanung 1. Systemkompone...

Auszeichnungssprache - CSS-Stile für Text festlegen

Klicken Sie hier, um zum Abschnitt „HTML-Tutorial“...

Zusammenfassung der @-Verwendung in CSS (mit Beispielen und Erklärungen)

Eine At-Regel ist eine Deklaration, die Anweisung...

Beispiele für die Verwendung des Linux-Touch-Befehls

Detaillierte Erklärung des Linux-Touch-Befehls: 1...

Welche Arten von MySQL-Verbindungsabfragen kennen Sie?

Vorwort Wenn die Abfrageinformationen aus mehrere...