Heim >Datenbank >MySQL-Tutorial >Wie simuliert man eine LAG-Funktion 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_quote
Speichern 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!