Perintah #42 · Subquery & CTE

WITH (CTE) di SQL

Common Table Expression: memberi nama pada hasil query sementara, lalu memakainya seperti tabel. Membuat query panjang jauh lebih rapi.

Sintaks

WITH nama_cte AS (
  SELECT ...
)
SELECT ...
FROM nama_cte;
BagianKeterangan
nama_cteNama tabel sementara. Hanya berlaku di query ini.
beberapa CTEPisahkan dengan koma: WITH a AS (...), b AS (...) SELECT ...

Tanda [kurung siku] berarti bagian opsional. Kata kunci SQL tidak membedakan huruf besar-kecil, tapi menulisnya dengan huruf besar membuat query lebih mudah dibaca.

Contoh WITH (CTE)

Data contoh: karyawan, penjualan

Tabel karyawan

idnamadept_idkotagajitgl_masukatasan_id
1 Andi Pratama 3 Bandung 12500000 2019-03-11 NULL
2 Bunga Lestari 1 Jakarta 9800000 2020-07-01 NULL
3 Candra Wijaya 3 Bandung 8200000 2021-02-15 1
4 Dewi Anggraini 2 Jakarta 7500000 2022-05-09 6
5 Eko Saputra 1 Jakarta 6900000 2023-01-16 2
6 Fajar Nugroho 2 Surabaya 11000000 2018-09-03 NULL
7 Gita Permata 3 Jakarta 8200000 2023-08-21 1
8 Hendra Gunawan NULL Medan 5500000 2024-04-02 NULL

Tabel penjualan

idtanggalkaryawan_idprodukkategoriqtyharga
1 2026-01-05 4 Laptop Elektronik 2 8500000
2 2026-01-12 6 Printer Elektronik 1 2300000
3 2026-01-20 4 Kursi Kantor Furnitur 5 1200000
4 2026-02-03 6 Laptop Elektronik 1 8500000
5 2026-02-14 4 Meja Kerja Furnitur 3 1750000
6 2026-02-25 5 Kertas A4 ATK 20 55000
7 2026-03-02 6 Kursi Kantor Furnitur 4 1200000
8 2026-03-10 4 Printer Elektronik 2 2300000
9 2026-03-18 5 Kertas A4 ATK 30 55000
10 2026-03-27 6 Monitor Elektronik 3 1900000
query.sql
WITH omzet_sales AS (
  SELECT karyawan_id, SUM(qty * harga) AS omzet
  FROM penjualan
  GROUP BY karyawan_id
)
SELECT k.nama, o.omzet
FROM omzet_sales AS o
JOIN karyawan AS k ON k.id = o.karyawan_id
ORDER BY o.omzet DESC;

Hasil 3 baris

namaomzet
Dewi Anggraini 32850000
Fajar Nugroho 21300000
Eko Saputra 2750000

Omzet dihitung per karyawan di CTE, lalu digabung ke tabel karyawan untuk mengambil namanya.

Belajar SQL bareng mentor

Hafal sintaks itu mudah. Menjawab pertanyaan bisnis, itu skill.

Private Class Python & SQL untuk Data: dari query dasar sampai JOIN dan studi kasus kerja, dengan kurikulum dan jadwal yang menyesuaikan kamu.

Lihat Private Class