Fungsi MySQL RANK

Fungsi MySQL RANK

Fungsi MySQL RANK

Ringkasan : dalam tutorial Fungsi MySQL RANK, Anda akan belajar tentang RANK()fungsi MySQL dan bagaimana menerapkannya untuk menetapkan peringkat ke setiap baris dalam partisi set hasil.

Perhatikan bahwa MySQL telah mendukung RANK()fungsi dan fungsi Windows lainnya sejak versi 8.0

Pengenalan RANK()fungsi MySQL

The RANK()Fungsi memberikan peringkat untuk setiap baris dalam partisi dari satu set hasil. Pangkat baris ditentukan oleh satu ditambah jumlah peringkat yang ada sebelumnya.

Berikut ini adalah sintaks dari RANK()fungsi tersebut:

RANK() OVER (

PARTITION BY <expression>[{,<expression>…}]

ORDER BY <expression> [ASC|DESC], [{,<expression>…}]

)

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

Dalam sintaks ini:

  • Pertama,¬†PARTITION BYklausa membagi kumpulan hasil menjadi beberapa partisi.¬†The¬†RANK()Fungsi dilakukan dalam partisi dan kembali diinisialisasi saat melintasi batas partisi.
  • Kedua,¬†ORDER BYKlausa mengurutkan baris dalam partisi dengan satu atau lebih kolom atau ekspresi.

Berbeda dengan ROW_NUMBER()fungsinya, RANK()fungsi tersebut tidak selalu mengembalikan bilangan bulat berurutan.

Misalkan kita memiliki tabel contoh sebagai berikut:

CREATE TABLE t (

val INT

);

INSERT INTO t(val)

VALUES(1),(2),(2),(3),(4),(4),(5);

SELECT * FROM t;

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

Pernyataan berikut menggunakan RANK()fungsi untuk menetapkan peringkat ke setiap baris dari hasil yang ditetapkan dalam ttabel:

SELECT

val,

RANK() OVER (

ORDER BY val

) my_rank

FROM

t;

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

Inilah hasilnya:

Seperti yang Anda lihat, baris kedua dan ketiga memiliki ikatan yang sama sehingga mereka menerima peringkat 2 yang sama.

Baris keempat memiliki peringkat 4 karena RANK()fungsinya melewati peringkat 3.

RANK()Contoh fungsi MySQL

Mari gunakan salestabel yang dibuat di tutorial fungsi Windows untuk demonstrasi.

Jika Anda belum membuat salestabel, berikut skripnya:

CREATE TABLE IF NOT EXISTS sales(

sales_employee VARCHAR(50) NOT NULL,

fiscal_year INT NOT NULL,

sale DECIMAL(14,2) NOT NULL,

PRIMARY KEY(sales_employee,fiscal_year)

);

 

INSERT INTO sales(sales_employee,fiscal_year,sale)

Baca Juga  Membuat custom filter pada datatable

VALUES(‘Bob’,2016,100),

(‘Bob’,2017,150),

(‘Bob’,2018,200),

(‘Alice’,2016,150),

(‘Alice’,2017,100),

(‘Alice’,2018,200),

(‘John’,2016,200),

(‘John’,2017,150),

(‘John’,2018,250);

 

SELECT * FROM sales;

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

Gambar berikut menunjukkan data salestabel:

Pernyataan berikut menggunakan RANK()fungsi untuk memberi peringkat karyawan penjualan berdasarkan jumlah penjualan di setiap tahun:

SELECT

sales_employee,

fiscal_year,

sale,

RANK() OVER (PARTITION BY

fiscal_year

ORDER BY

sale DESC

) sales_rank

FROM

sales;

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

Dalam contoh ini:

  • Pertama,¬†PARTITION BYklausul memecah kumpulan hasil menjadi beberapa partisi berdasarkan tahun fiskal.
  • Kemudian,¬†ORDER BYklausul mengurutkan karyawan penjualan menurut penjualan dalam urutan menurun.

RANK()Fungsi MySQL dengan contoh CTE

Pernyataan berikut menggunakan RANK()fungsi tersebut untuk menemukan tiga pesanan bernilai tertinggi di setiap tahun:

WITH order_values AS(

SELECT

orderNumber,

YEAR(orderDate) order_year,

quantityOrdered*priceEach AS order_value,

RANK() OVER (

PARTITION BY YEAR(orderDate)

ORDER BY quantityOrdered*priceEach DESC

) order_value_rank

FROM

orders

INNER JOIN orderDetails USING (orderNumber)

)

SELECT

*

FROM

order_values

WHERE

order_value_rank <=3;

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

Inilah hasilnya:

Fungsi MySQL RANK - Contoh Nilai Pesanan

Dalam contoh ini:

  • Pertama, kami menggunakan¬†ekspresi tabel umum¬†(CTE) untuk mendapatkan nomor pesanan, tahun pesanan, dan peringkat.¬†Untuk memberi peringkat pesanan berdasarkan nilai pesanan di setiap tahun, kami menggunakan¬†RANK()fungsi yang mempartisi baris berdasarkan tahun pesanan dan mengurutkan nilai pesanan dalam urutan menurun.
  • Kemudian, kami hanya memilih pesanan yang peringkatnya kurang dari atau sama dengan tiga.

Dalam tutorial ini, Anda telah mempelajari cara menggunakan RANK()fungsi MySQL untuk menetapkan peringkat ke setiap baris dalam kumpulan hasil.

 

Tinggalkan Komentar

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

Need Help? Chat with us