Fungsi MySQL LAG

Fungsi MySQL LAG

Ringkasan : dalam tutorial Fungsi MySQL LAG, Anda akan belajar cara menggunakan LAG()fungsi MySQL untuk mengakses data baris sebelumnya dari baris saat ini di set hasil yang sama.

The LAG()fungsi adalah fungsi Windows yang memungkinkan Anda untuk melihat kembali sejumlah baris dan akses data dari baris yang dari baris saat ini.

Berikut ini ilustrasi sintaks dari LAG()fungsi tersebut:

LAG(<expression>[,offset[, default_value]]) OVER (

PARTITION BY expr,…

ORDER BY expr [ASC|DESC],…

)

Bahasa kode: SQL (Structured Query Language) ( sql )

ekspresi

The LAG()fungsi mengembalikan nilai expressiondari baris yang mendahului baris saat ini dengan offset jumlah baris dalam partisi atau hasil set.

mengimbangi

Ini offsetadalah jumlah baris yang mundur dari baris saat ini untuk mendapatkan nilainya. The offsetharus nol atau bilangan bulat positif literal. Jika offsetnol, maka LAG()fungsi mengevaluasi expressionuntuk baris saat ini. Jika Anda tidak menentukannya offset, maka LAG()fungsi akan menggunakan salah satu secara default.

default_value

Jika tidak ada baris sebelumnya, maka LAG()fungsi mengembalikan default_value. Misalnya jika offset adalah 2, nilai yang dikembalikan untuk baris pertama adalah default_value. Jika Anda menghilangkan default_value, LAG()fungsi kembali NULLsecara default.

PARTITION BY ayat

The PARTITION BYklausul membagi baris di set hasil ke partisi mana LAG()fungsi diterapkan. Jika Anda menghilangkan PARTITION BYklausa tersebut, LAG()fungsi akan menganggap seluruh hasil yang ditetapkan sebagai partisi tunggal.

ORDER BY ayat

The ORDER BYklausul menentukan urutan baris di setiap partisi sebelum LAG()fungsi diterapkan.

The  LAG()Fungsi ini berguna untuk menghitung perbedaan antara saat ini dan baris sebelumnya.

LAG()Contoh fungsi MySQL

Kami akan menggunakan orders, orderDetailsdan productLinesmeja dari para database contoh untuk demonstrasi.

Pernyataan berikut mengembalikan nilai pesanan setiap lini produk di tahun tertentu dan tahun sebelumnya:

WITH productline_sales AS (

SELECT productline,

YEAR(orderDate) order_year,

ROUND(SUM(quantityOrdered * priceEach),0) order_value

FROM orders

INNER JOIN orderdetails USING (orderNumber)

INNER JOIN products USING (productCode)

GROUP BY productline, order_year

)

SELECT

productline,

order_year,

order_value,

Baca Juga  Cara Menampilkan Ribbon Display Option

LAG(order_value, 1) OVER (

PARTITION BY productLine

ORDER BY order_year

) prev_year_order_value

FROM

productline_sales;

Bahasa kode: SQL (Structured Query Language) ( sql )

Inilah hasilnya:

Dalam contoh ini:

  • Pertama, kami menggunakan¬†ekspresi tabel umum¬†untuk mendapatkan nilai pesanan setiap produk di setiap tahun.
  • Kemudian, kami membagi produk menggunakan lini produk menjadi beberapa partisi, mengurutkan setiap partisi berdasarkan tahun pesanan, dan menerapkan¬†LAG()fungsi ke setiap partisi yang diurutkan untuk mendapatkan nilai pesanan tahun sebelumnya dari setiap produk.

Perhatikan bahwa kami menggunakan ROUND()fungsi untuk membulatkan nilai pesanan ke nol tempat desimal.

Dalam tutorial ini, Anda telah mempelajari cara menggunakan LAG()fungsi MySQL untuk mengakses data baris sebelumnya dari baris saat ini.

 

Tinggalkan Komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Need Help? Chat with us