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:
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.
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:
Dalam tutorial ini, Anda telah mempelajari cara menggunakan NTILE()fungsi MySQL untuk mendistribusikan baris ke dalam sejumlah grup tertentu.

Seorang pengajar dan pembelajar yang mengurus lembaga pelatihan dan kursus komputer bernama LKP Naura