SQL-Implementierung von LeetCode (197. Steigende Temperatur)

SQL-Implementierung von LeetCode (197. Steigende Temperatur)

[LeetCode] 197.Steigende Temperatur

Schreiben Sie für eine Wettertabelle eine SQL-Abfrage, um die IDs aller Daten zu finden, bei denen die Temperatur im Vergleich zum vorherigen (gestrigen) Datum höher ist.

+---------+------------+------------------+
| ID(INT) | Datum(DATE) | Temperatur(INT) |
+---------+------------+------------------+
| 1 | 01.01.2015 | 10 |
| 2 | 02.01.2015 | 25 |
| 3 | 03.01.2015 | 20 |
| 4 | 04.01.2015 | 30 |
+---------+------------+------------------+

Geben Sie beispielsweise die folgenden IDs für die obige Wettertabelle zurück:

+----+
| Ich würde |
+----+
| 2 |
| 4 |
+----+

Diese Frage gibt uns eine Wettertabelle und fordert uns auf, die ID mit einer höheren Temperatur als am Vortag zu finden. Da die IDs nicht unbedingt in der richtigen Reihenfolge angeordnet sind, müssen wir den Vortag anhand des Datums finden. Wir können die MySQL-Funktion Datadiff verwenden, um die Differenz zwischen zwei Daten zu berechnen. Unsere Einschränkung ist, dass die Temperatur hoch ist und die Datumsdifferenz 1 beträgt. Siehe den Code unten:

Lösung 1:

SELECT w1.Id FROM Wetter w1, Wetter w2
WO w1.Temperatur > w2.Temperatur UND DATEDIFF(w1.Datum, w2.Datum) = 1;

Die folgende Lösung verwendet die MySQL-Funktion TO_DAYS, um das Datum in Tage umzuwandeln, der Rest ist gleich wie oben:

Lösung 2:

SELECT w1.Id FROM Wetter w1, Wetter w2
WO w1.Temperatur > w2.Temperatur UND HEUTE(w1.Datum) = HEUTE(w2.Datum) + 1;

Wir können auch die Subdate-Funktion verwenden, um 1 vom Datum abzuziehen, wie im folgenden Code gezeigt:

Lösung 3:

SELECT w1.Id FROM Wetter w1, Wetter w2
WO w1.Temperatur > w2.Temperatur UND SUBDATE(w1.Datum, 1) = w2.Datum;

Schließlich wird eine völlig andere Lösung verwendet. Zwei Variablen, pre_t und pre_d, werden verwendet, um die vorherige Temperatur bzw. das vorherige Datum darzustellen. Die aktuelle Temperatur muss höher sein als die vorherige Temperatur und der Datumsunterschied beträgt 1. Wenn die beiden oben genannten Bedingungen erfüllt sind, wird sie als ID ausgewählt, andernfalls ist sie NULL. Dann werden pre_t und pre_d auf die aktuellen Werte aktualisiert und die ausgewählte ID ist nicht leer:

Lösung 4:

Wählen Sie ID aus (
SELECT CASE WHEN Temperatur > @pre_t UND DATEDIFF(Datum, @pre_d) = 1 DANN Id SONST NULL END AS Id,
@pre_t := Temperatur, @pre_d := Datum 
VON Wetter, (SELECT @pre_t := NULL, @pre_d := NULL) AS init ORDER BY Datum ASC
) id, wobei ID nicht NULL ist;

Quellen:

https://leetcode.com/discuss/33641/two-solutions

https://leetcode.com/discuss/52370/my-simple-solution-using-inner-join

https://leetcode.com/discuss/86435/a-simple-straightforward-solution-and-its-very-fast

Dies ist das Ende dieses Artikels über die SQL-Implementierung von LeetCode (197. Steigende Temperatur). Weitere relevante Inhalte zur SQL-Implementierung steigender Temperaturen 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 (196. Doppelte Postfächer löschen)
  • SQL-Implementierung LeetCode (185. Top drei der höchsten Gehälter in der Abteilung)
  • 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)
  • C++-Implementierung von LeetCode (179. Maximale Anzahl an Kombinationen)

<<:  Legen Sie den Standardtext des Suchfelds fest. Der Standardtext verschwindet, wenn mit der Maus geklickt wird.

>>:  Detaillierte Erläuterung von CSS3 zum Erzielen eines reaktionsschnellen Akkordeoneffekts

Artikel empfehlen

Detaillierte Schritte zur Installation und Konfiguration von MySQL 5.7

1. MySQL herunterladen 1. Melden Sie sich auf der...

So aktivieren Sie die MySQL-Remoteverbindung

Aus Sicherheitsgründen erlaubt MySql-Server nur d...

Eine kurze Analyse der parallelen WriteSet-Replikation von MySQL

【Historischer Hintergrund】 Ich arbeite seit drei ...

Einführung in die grafischen Kompositions- und Satzfunktionen des Webdesigns

Alles braucht ein Fundament. Um ein Haus zu bauen...

Beispielanalyse der MySQL-Benutzerrechteverwaltung

Dieser Artikel beschreibt das Beispiel der MySQL-...

Gängige Master-Slave-Replikationsarchitekturen in MySQL 4

Inhaltsverzeichnis Replikationsarchitektur mit ei...

Probleme beim Erstellen von Platzhaltern für HTML-Auswahlfelder

Ich verwende einen Platzhalter in einer Texteinga...

Einfaches Beispiel für die Leistungsoptimierung von MySQL-SQL-Anweisungen

Einfaches Beispiel für die Leistungsoptimierung v...