Heim >Datenbank >MySQL-Tutorial >Wie simuliert man eine LAG-Funktion in MySQL?

Wie simuliert man eine LAG-Funktion in MySQL?

Linda Hamilton
Linda HamiltonOriginal
2025-01-18 01:17:07924Durchsuche

How to Simulate a LAG Function in MySQL?

LAG-Funktion in MySQL simulieren

MySQL selbst unterstützt die LAG-Funktion zur Berechnung der Wertedifferenz zwischen aufeinanderfolgenden Zeilen nicht. Wir können die Funktionalität der LAG-Funktion jedoch auf folgende Weise simulieren.

LAG-Funktion simulieren

Die folgende SQL-Anweisung simuliert die LAG-Funktion in MySQL:

<code class="language-sql">SET @quot=-1;
select time,company,@quot lag_quote, @quot:=quote curr_quote
  from stocks order by company,time;</code>

Hier ist @quot eine benutzerdefinierte Variable, die zum Speichern des Zitats der vorherigen Zeile verwendet wird. Für die erste Zeile wird @quot auf -1 initialisiert. curr_quoteSpeichern Sie das Angebot für die aktuelle Zeile.

Maßgeschneiderte Ergebnisse

Während die obige Simulation Hysteresewerte liefert, stellt sie die Ergebnisse nicht in dem in der Frage angegebenen Format dar. Um dieses Format zu erreichen, kann die folgende verschachtelte Abfrage verwendet werden:

<code class="language-sql">SET @quot=0,@latest=0,company='';
select B.* from (
select A.time,A.change,IF(@comp=A.company,1,0) as LATEST,@comp:=A.company as company from (
select time,company,quote-@quot as change, @quot:=quote curr_quote
from stocks order by company,time) A
order by company,time desc) B where B.LATEST=1;</code>

Diese verschachtelte Abfrage berechnet die Angebotsdifferenzen und identifiziert die letzte Zeile für jedes Unternehmen und generiert so eine Ausgabe im erforderlichen Format.

Das obige ist der detaillierte Inhalt vonWie simuliert man eine LAG-Funktion in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn