Fungsi MySQL NTILE dengan contoh CTE

Fungsi MySQL NTILE

Fungsi MySQL NTILE

Ringkasan : dalam tutorial Fungsi MySQL NTILE, Anda akan belajar bagaimana menggunakan NTILE()fungsi MySQL untuk membagi baris menjadi sejumlah grup tertentu.

Pengenalan NTILE()fungsi MySQL

Fungsi MySQL NTILE()membagi baris dalam partisi yang diurutkan menjadi sejumlah grup tertentu. Setiap kelompok diberi nomor ember mulai dari satu. Untuk setiap baris, NTILE()fungsi mengembalikan nomor keranjang yang mewakili grup tempat baris tersebut berada.

Berikut ini adalah sintaks dari NTILE()fungsi tersebut:

NTILE(n) OVER (

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

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

)

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

Dalam sintaks ini:

  • ¬†nadalah bilangan bulat positif literal.¬†Nomor keranjang berada dalam kisaran dari 1 hingga¬†n.
  • The¬†PARTITION BYmembagi hasil set kembali dari¬†FROMklausul ke partisi mana¬†NTILE()fungsi diterapkan.
  • The¬†ORDER BYklausul menspesifikasikan urutan dimana¬†NTILE()nilai-nilai yang ditugaskan ke baris dalam partisi.

Perhatikan bahwa jika jumlah baris partisi tidak habis dibagi n, NTILE()fungsi akan menghasilkan kelompok dua ukuran dengan selisih satu. Grup yang lebih besar selalu berada sebelum grup yang lebih kecil dalam urutan yang ditentukan oleh ORDER BYklausa.

Sebaliknya, jika total baris partisi habis dibagi n, baris akan dibagi rata di antara grup.

Lihat tabel berikut yang menyimpan sembilan bilangan bulat dari satu hingga sembilan:

CREATE TABLE t (

val INT NOT NULL

);

INSERT INTO t(val)

VALUES(1),(2),(3),(4),(5),(6),(7),(8),(9);

SELECT * FROM t;

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

Jika Anda menggunakan NTILE()fungsi untuk membagi sembilan baris menjadi empat grup, Anda akan berakhir di grup pertama dengan tiga baris dan tiga grup lainnya dengan empat baris.

Lihat demonstrasi berikut ini:

SELECT

val,

NTILE (4) OVER (

ORDER BY val

) bucket_no

FROM

t;

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

Inilah hasilnya:

Fungsi MySQL NTILE - grup dengan jumlah baris yang berbeda

Seperti yang Anda lihat dari keluaran, grup pertama memiliki tiga baris sedangkan grup lainnya memiliki dua baris.

Mari ubah jumlah grup dari empat menjadi tiga seperti yang ditunjukkan dalam kueri berikut:

SELECT

val,

NTILE (3) OVER (

ORDER BY val

) bucket_no

FROM

t;

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

Kumpulan hasil sekarang memiliki tiga grup dengan jumlah baris yang sama.

Fungsi MySQL NTILE - grup dengan perbedaan dalam baris

NTILE()Contoh fungsi MySQL

Kami akan menggunakan orders, orderDetails dan productstabel dari database contoh untuk demonstrasi.

Lihat kueri berikut:

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,

NTILE(3) OVER (

PARTITION BY order_year

ORDER BY order_value DESC

) product_line_group

FROM

productline_sales;

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

Dalam contoh ini:

  • Pertama, dalam¬†productline_salesekspresi tabel umum, kita mendapatkan nilai pesanan total setiap lini produk berdasarkan tahun.
  • Kemudian, kami menggunakan¬†NTILE()fungsi tersebut untuk membagi penjualan dengan lini produk di setiap tahun menjadi tiga kelompok.

Inilah hasilnya:

Fungsi MySQL NTILE dengan contoh CTE

Dalam tutorial ini, Anda telah mempelajari cara menggunakan NTILE()fungsi MySQL untuk mendistribusikan baris ke dalam sejumlah grup tertentu.

 

Tinggalkan Komentar

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

Need Help? Chat with us