Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mensimulasikan Fungsi LAG dalam MySQL?

Bagaimana untuk Mensimulasikan Fungsi LAG dalam MySQL?

Linda Hamilton
Linda Hamiltonasal
2025-01-18 01:17:07920semak imbas

How to Simulate a LAG Function in MySQL?

Simulasikan fungsi LAG dalam MySQL

MySQL sendiri tidak menyokong fungsi LAG untuk mengira perbezaan nilai antara baris berturut-turut. Walau bagaimanapun, kita boleh mensimulasikan kefungsian fungsi LAG dengan cara berikut.

Simulasikan fungsi LAG

Pernyataan SQL berikut mensimulasikan fungsi LAG dalam 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>

Di sini, @quot ialah pembolehubah yang ditentukan pengguna yang digunakan untuk menyimpan petikan baris sebelumnya. Untuk baris pertama, @quot dimulakan kepada -1. curr_quoteSimpan petikan untuk baris semasa.

Hasil tersuai

Walaupun simulasi di atas menyediakan nilai histerisis, ia tidak membentangkan keputusan dalam format yang dinyatakan dalam soalan. Untuk mencapai format ini, pertanyaan bersarang berikut boleh digunakan:

<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>

Pertanyaan bersarang ini mengira perbezaan sebut harga dan mengenal pasti baris terakhir untuk setiap syarikat, sekali gus menjana output dalam format yang diperlukan.

Atas ialah kandungan terperinci Bagaimana untuk Mensimulasikan Fungsi LAG dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn