[LeetCode] 197.Steigende TemperaturSchreiben 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.
Geben Sie beispielsweise die folgenden IDs für die obige Wettertabelle zurück:
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:
|
>>: Detaillierte Erläuterung von CSS3 zum Erzielen eines reaktionsschnellen Akkordeoneffekts
Inhaltsverzeichnis Überblick Front-End-Wissenssys...
1. MySQL herunterladen 1. Melden Sie sich auf der...
Installieren Sie mysql5.7 unter Win. Zu Ihrer Inf...
Man muss sagen, dass ein Webdesigner ein Generalis...
Aus Sicherheitsgründen erlaubt MySql-Server nur d...
【Historischer Hintergrund】 Ich arbeite seit drei ...
Alles braucht ein Fundament. Um ein Haus zu bauen...
Dieser Artikel beschreibt das Beispiel der MySQL-...
Vorwort Da ich während des Lernprozesses Zookeepe...
Inhaltsverzeichnis Replikationsarchitektur mit ei...
Ich verwende einen Platzhalter in einer Texteinga...
1. Mechanismus des Linux-Kernel-Treibermoduls Sta...
Einfaches Beispiel für die Leistungsoptimierung v...
Inhaltsverzeichnis 1. Einführung in den Autofs-Di...
Wenn MySQL normal ausgeführt wird, ist es nicht s...