Pelajaran 34 / 37 · Window function
LAG membaca nilai dari baris sebelumnya
Untuk setiap pelanggan, dengan urutan tanggal, lag() mengambil amount dari baris sebelumnya. Pesanan pertama setiap pelanggan tidak punya baris sebelumnya, jadi hasilnya NULL.
Query-nya
SELECT id, customer_id, order_date, amount,
lag(amount) OVER (PARTITION BY customer_id ORDER BY order_date) AS previous_amount,
amount - lag(amount) OVER (PARTITION BY customer_id ORDER BY order_date) AS change
FROM orders
WHERE amount IS NOT NULL
ORDER BY customer_id, order_date
Coba lead(amount): ia membaca baris berikutnya, jadi pesanan terakhir setiap pelanggan mendapat NULL.
Berikutnya: Membuat peringkat, lalu menyaringnya dengan QUALIFY · Semua pelajaran