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

Docker-Einstellung für den Windows-Speicherpfadvorgang

Wenn Sie Docker unter Windows 10 installieren und...

Miniprogramm zur Implementierung der Token-Generierung und -Verifizierung

Inhaltsverzeichnis Verfahren Demo Mini-Programm B...

So löschen Sie eine Eigenschaft eines Objekts in JavaScript

1. löschen delete ist die einzige wirkliche Mögli...

So finden Sie langsame MySQL-Abfragen

Vorwort Ich glaube, dass jeder in seiner tägliche...

Einführung in die gängigen Festplattenverwaltungsbefehle von Linux

Inhaltsverzeichnis 1. df-Befehl 2. du-Befehl 3. B...

Detaillierte Erklärung der Verwendung von overflow:auto

Bevor ich mit dem Haupttext beginne, werde ich ei...

Schreiben Sie Ihr HTML so, um Ihren Code kompatibler zu machen

Beispielsweise Benutzer, die eine Bildschirmleseso...

MySQL-unabhängiger Index und gemeinsame Indexauswahl

Häufig fehlt das Verständnis für mehrspaltige Ind...

Eine kleine Sammlung von HTML-Meta-Tags

<Head>……</head> gibt den Dateikopf vo...

vue $set implementiert die Zuweisung von Werten zu Array-Sammlungsobjekten

Vue $set Array-Sammlungsobjektzuweisung In der be...