Simulation der Lag-Funktion in MySQL
Die Berechnung der Differenz zwischen aufeinanderfolgenden Werten in einer Zeitreihe (Lag genannt) kann in MySQL mithilfe einer cleveren Problemumgehung implementiert werden. Um diese Technik zu verstehen, betrachten wir die bereitgestellte Tabelle:
<code>| time | company | quote | +---------------------+---------+-------+ | 0000-00-00 00:00:00 | GOOGLE | 40 | | 2012-07-02 21:28:05 | GOOGLE | 60 | | 2012-07-02 21:28:51 | SAP | 60 | | 2012-07-02 21:29:05 | SAP | 20 |</code>
Um die Verzögerungsfunktion zu simulieren und die Differenz in den Kursen zu berechnen, wenden wir die folgende Strategie an:
@quot
hat einen Anfangswert von -1 und @curr_quote
wird verwendet, um den aktuellen Angebotswert zu verfolgen. <code class="language-sql">SET @quot=-1; SELECT time, company, @quot AS lag_quote, @quot:=quote AS curr_quote FROM stocks ORDER BY company, time;</code>
lag_quote
enthält jetzt den Gebotswert der vorherigen Zeile und curr_quote
den Gebotswert der aktuellen Zeile. Um das gewünschte Ausgabeformat zu erhalten (Firmen- und Angebotsunterschiede):
<code>GOOGLE | 20 SAP | 40</code>
Wir verwenden verschachtelte Abfragen:
<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 AS curr_quote FROM stocks ORDER BY company, time ) A ORDER BY company, time DESC ) B WHERE B.LATEST=1;</code>
Diese Methode simuliert effektiv eine Verzögerungsfunktion, indem sie eine Sitzungsvariable verwaltet, die den Wert der vorherigen Zeile verfolgt. Obwohl es rechenintensiv aussieht, stehen die verschachtelten Abfragen nicht in Beziehung zueinander, sodass es immer noch relativ effizient ist.
Das obige ist der detaillierte Inhalt vonWie kann ich eine Verzögerungsfunktion in MySQL simulieren, um Unterschiede zwischen aufeinanderfolgenden Werten zu berechnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!