Common Table Expressions (CTE) memungkinkan Anda dengan mudah menulis kueri SQL yang kompleks di MySQL. Pada artikel ini, kita akan melihat apa itu Common Table Expression di MySQL dan bagaimana menulis CTE di MySQL.
Apa itu Ekspresi Tabel Umum
Ekspresi Tabel Umum adalah kumpulan hasil bernama yang cakupannya terbatas pada kueri SQL di mana ia didefinisikan dan digunakan. Ini mirip dengan tabel turunan tetapi tidak disimpan sebagai objek dan dapat menjadi referensi sendiri, tidak seperti tabel turunan. Hasilnya, CTE memberikan kinerja yang lebih baik daripada tabel turunan di MySQL.
Bonus Baca :Cara Menghitung Margin di MySQL
Ekspresi Tabel Umum di MySQL
Berikut adalah sintaks ekspresi tabel umum di MySQL.
WITH cte_name (column_list) AS ( query ) SELECT * FROM cte_name;
Dalam kueri di atas, Anda perlu menentukan nama CTE, kueri SQL yang hasilnya harus direferensikan menggunakan nama CTE. Harap diperhatikan, jumlah kolom di column_list harus sama dengan yang ada di kueri your .
Mari kita lihat contoh ekspresi tabel umum (CTE).
Bonus Baca :Cara Mendapatkan Produk Terlaris Menggunakan SQL Query
Katakanlah Anda memiliki penjualan(id, tanggal_pesanan, jumlah) tabel.
mysql> create table sales(id int, order_date date, amount int); mysql> insert into sales(id, order_date, amount) values(1, '2021-01-01', 200), (2, '2021-01-02', 250), (3, '2021-01-03', 220), (4, '2021-01-04', 230), (5, '2021-01-05', 210), (6, '2021-01-06', 100), (7, '2021-01-07', 120), (8, '2021-01-08', 150), (9, '2021-01-09', 180), (10, '2021-01-10', 200); mysql> select * from sales; +------+------------+--------+ | id | order_date | amount | +------+------------+--------+ | 1 | 2021-01-01 | 200 | | 2 | 2021-01-02 | 250 | | 3 | 2021-01-03 | 220 | | 4 | 2021-01-04 | 230 | | 5 | 2021-01-05 | 210 | | 6 | 2021-01-06 | 100 | | 7 | 2021-01-07 | 120 | | 8 | 2021-01-08 | 150 | | 9 | 2021-01-09 | 180 | | 10 | 2021-01-10 | 200 | +------+------------+--------+
Berikut adalah CTE untuk memilih hanya catatan penjualan yang memiliki jumlah>200.
with test_cte as ( select id,order_date,amount from sales where amount>200 ) select * from test_cte; +------+------------+--------+ | id | order_date | amount | +------+------------+--------+ | 1 | 2021-01-01 | 200 | | 2 | 2021-01-02 | 250 | | 3 | 2021-01-03 | 220 | | 4 | 2021-01-04 | 230 | | 5 | 2021-01-05 | 210 | | 10 | 2021-01-10 | 200 | +------+------------+--------+
Dalam CTE di atas, kami menentukan kueri SELECT untuk memfilter baris dengan jumlah>200 di dalam klausa WITH.
Bonus Baca :Cara Menggunakan pernyataan CASE di MySQL
Harap dicatat, Anda dapat menggunakan CTE dengan pernyataan SELECT, UPDATE, INSERT dan DELETE. Berikut adalah sintaks untuk hal yang sama.
WITH … SELECT … WITH … UPDATE … WITH … DELETE …
Juga, Anda dapat menggunakan CTE sebagai subquery, seperti yang ditunjukkan di bawah ini
SELECT … WHERE id IN (WITH … SELECT …); SELECT * FROM (WITH … SELECT …) AS temporary_table;
Jika Anda menggunakan hasil dari pernyataan SELECT sebagai input untuk pernyataan CREATE/INSERT/REPLACE, maka Anda juga dapat menggunakan klausa WITH di dalamnya. Berikut beberapa contohnya,
CREATE TABLE … WITH … SELECT … CREATE VIEW … WITH … SELECT … INSERT … WITH … SELECT … REPLACE … WITH … SELECT … DECLARE CURSOR … WITH … SELECT … EXPLAIN … WITH … SELECT …
Bonus baca :Dapatkan Banyak Hitungan dengan kondisi berbeda di MySQL
Ekspresi Tabel Umum di Ubiq
Alat Pelaporan Ubiq mendukung kueri SELECT berbasis CTE dan memudahkan untuk memvisualisasikan hasil SQL dengan cara yang berbeda. Ini juga memungkinkan Anda membuat dasbor &bagan dari hasil kueri MySQL. Berikut adalah kueri CTE di atas di Ubiq.
Bahkan, setelah Anda menjalankan kueri, Anda cukup mengeklik jenis visualisasi untuk memplot hasilnya dalam bagan.
Butuh alat pelaporan untuk MySQL? Ubiq memudahkan untuk memvisualisasikan data dalam hitungan menit, dan memantau di dasbor waktu nyata. Cobalah Hari ini!