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_quote
Simpan 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!