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

Lösung für das Problem des verstümmelten Codes in MySQL 5.x

MySQL ist eine häufig verwendete Open-Source-Date...

js regulärer Ausdruck Lookahead und Lookbehind und nicht erfassende Gruppierung

Inhaltsverzeichnis Kombinieren von Lookahead und ...

Detaillierte Erklärung des MySQL-Covering-Index

Konzept Wenn der Index alle Daten enthält, die di...

Implementierung des klassischen CSS-Sticky-Footer-Layouts

Was ist ein Sticky-Footer-Layout? Unser übliches ...

So implementieren Sie eine automatische Remote-Sicherung von MongoDB unter Linux

Vorwort Nachdem ich den vorherigen Artikel über d...

Informationen zur Layoutmethode für Inhaltsüberlauf in Tabellen

Was ist Inhaltsüberlauf? Wenn tatsächlich viel Te...

Details zur Verwendung des Vue-Slots

Inhaltsverzeichnis 1. Warum Slots verwenden? 1.1 ...

Beispiel für das Hinzufügen und Löschen von Bereichspartitionen in MySQL 5.5

einführen Die RANGE-Partitionierung basiert auf e...

Einfache Anwendungsbeispiele für benutzerdefinierte MySQL-Funktionen

Dieser Artikel veranschaulicht anhand von Beispie...

Ausführliche Erläuterung der gespeicherten MySQL-Prozeduren (in, out, inout)

1. Einleitung Es wird seit Version 5.0 unterstütz...

So verstehen und identifizieren Sie Dateitypen in Linux

Vorwort Wie wir alle wissen, ist in Linux alles e...

Detaillierte Erläuterung der Fallstricke des Nginx-Proxy-Socket.io-Dienstes

Inhaltsverzeichnis Nginx fungiert als Proxy für z...