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

Bagaimana untuk Mensimulasikan Fungsi LAG dalam MySQL?

Linda Hamilton
Lepaskan: 2025-01-18 01:17:07
asal
919 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan