0Pricing
SQL Interview Prep · Pelajaran

Menulis CTE Pertama Anda

Pelajari sintaks dasar WITH dan kapan CTE meningkatkan keterbacaan dibandingkan subkueri.

Menulis CTE Pertama Anda adalah pelajaran SQL Interview Prep gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Interview Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Interview Prep mencakup 4 pelajaran total.

Apa Sebenarnya CTE Itu

Ekspresi Tabel Umum (CTE) adalah kumpulan hasil sementara yang diberi nama dan didefinisikan dengan kata kunci WITH, yang hanya ada selama satu kueri. Pewawancara menyukai CTE karena fitur ini menunjukkan apakah Anda dapat menyusun logika dengan jelas.

Anggap CTE sebagai pemberian nama pada subkueri sehingga Anda dapat merujuknya seperti tabel dalam pernyataan utama berikutnya. CTE tidak membuat objek permanen dan menghilang segera setelah kueri selesai.

Sintaks Dasar WITH

Setiap CTE dimulai dengan WITH, sebuah nama, kata kunci AS, dan kueri dalam tanda kurung. Setelah tanda kurung tutup, tulis pernyataan biasa yang menggunakan CTE berdasarkan namanya.

  • WITH cte_name AS ( ... ) mendefinisikan blok tersebut.
  • Kueri tepat setelah tanda kurung adalah kueri utama.
  • Nama CTE berperilaku seperti tabel yang dapat Anda gunakan dalam SELECT.
WITH recent_orders AS (
    SELECT *
    FROM orders
    WHERE order_date >= '2024-01-01'
)
SELECT *
FROM recent_orders;

Mengapa Tidak Menggunakan Subkueri Saja

Logika yang sama dapat ditulis sebagai subkueri langsung dalam klausa FROM. Jadi, mengapa pewawancara menanyakan CTE?

  • Keterbacaan: langkah yang diberi nama terbaca dari atas ke bawah seperti resep.
  • Penggunaan ulang: Anda dapat merujuk CTE yang sama beberapa kali, alih-alih mengulangi subkueri.
  • Kemudahan penelusuran kesalahan: Anda dapat menjalankan SELECT hanya pada CTE untuk memeriksanya.

Jawaban yang tepat dalam wawancara biasanya adalah: gunakan CTE jika membuat kueri lebih mudah dibaca dan dipelihara.

Contoh Lengkap: Menyaring lalu Mengagregasi

Misalkan pertanyaannya adalah: temukan total pendapatan dari pesanan yang dibuat tahun ini. CTE memungkinkan Anda memisahkan langkah penyaringan, lalu melakukan agregasi atas hasil yang diberi nama tersebut.

Kueri utama memperlakukan recent_orders seolah-olah merupakan tabel sungguhan, sehingga agregasinya tetap rapi dan jelas.

WITH recent_orders AS (
    SELECT amount
    FROM orders
    WHERE order_date >= '2024-01-01'
)
SELECT SUM(amount) AS total_revenue
FROM recent_orders;

Menamai Kolom Hasil

Anda dapat mengganti nama kolom yang ditampilkan CTE dengan mencantumkannya tepat setelah nama CTE. Ini berguna ketika kueri dalam menghasilkan ekspresi atau ketika Anda menginginkan nama yang lebih jelas pada tahap berikutnya.

Jika Anda menyediakan daftar kolom, jumlahnya harus sama dengan jumlah kolom yang dikembalikan kueri dalam, atau basis data akan menghasilkan kesalahan.

WITH revenue (region, total) AS (
    SELECT region, SUM(amount)
    FROM orders
    GROUP BY region
)
SELECT region, total
FROM revenue
ORDER BY total DESC;

CTE Hanyalah Kueri Bernama

Salah satu cara berpikir yang mengesankan pewawancara: CTE secara logis setara dengan memasukkan definisinya langsung ke dalam kueri. Basis data dapat memilih untuk memasukkannya langsung atau mewujudkannya sebagai hasil tersimpan, tetapi secara semantik hasilnya sama seperti jika Anda menempelkan subkueri tersebut.

Artinya, apa pun yang valid dalam SELECT biasa juga valid di dalam CTE: penggabungan, GROUP BY, WHERE, fungsi jendela, dan lainnya.

Contoh Lebih Mendalam: CTE dengan Penggabungan

CTE sangat berguna ketika Anda perlu membentuk terlebih dahulu salah satu sisi penggabungan. Di sini, kita terlebih dahulu membuat jumlah pesanan per pelanggan, lalu menggabungkannya kembali ke tabel pelanggan sehingga setiap baris pelanggan menyertakan totalnya.

Perhatikan bagaimana kueri utama terbaca hampir seperti bahasa biasa: dari pelanggan, gabungkan jumlah pesanan mereka.

WITH order_counts AS (
    SELECT customer_id, COUNT(*) AS num_orders
    FROM orders
    GROUP BY customer_id
)
SELECT c.name, oc.num_orders
FROM customers c
JOIN order_counts oc
    ON oc.customer_id = c.id;

Posisi CTE dalam Kueri

Blok WITH harus berada sebelum pernyataan yang menggunakannya. CTE hanya terlihat oleh satu pernyataan yang langsung mengikuti definisinya.

  • Anda tidak dapat merujuk CTE dalam kueri terpisah yang dijalankan kemudian.
  • CTE yang didefinisikan untuk sebuah SELECT tidak dapat digunakan ulang oleh SELECT lain yang dijalankan setelahnya.
  • Cakupan berakhir pada titik koma yang mengakhiri pernyataan.

CTE Dapat Digunakan dengan INSERT, UPDATE, DELETE

Pertanyaan lanjutan yang sering muncul: CTE tidak terbatas pada SELECT. Dalam sebagian besar basis data modern, Anda juga dapat menambahkan klausa WITH ke pernyataan modifikasi data.

Dengan demikian, Anda dapat menghitung sekumpulan baris satu kali lalu memprosesnya, yang terbaca jauh lebih jelas daripada subkueri bersarang di dalam klausa WHERE.

WITH stale AS (
    SELECT id
    FROM sessions
    WHERE last_seen < NOW() - INTERVAL '30 days'
)
DELETE FROM sessions
WHERE id IN (SELECT id FROM stale);

Kesalahan Umum Pemula

Pewawancara memperhatikan kekeliruan berikut:

  • Lupa menulis kueri utama setelah CTE; blok WITH saja bukan pernyataan lengkap.
  • Menempatkan titik koma di antara CTE dan kueri utama.
  • Mengira CTE tetap tersedia di antara beberapa pernyataan.
  • Ketidaksesuaian antara daftar nama kolom opsional dan kolom-kolom pada kueri dalam.

Cara Membahas CTE dalam Wawancara

Ketika diminta merapikan subkueri yang rumit, jelaskan pemikiran Anda: Saya akan memindahkan subkueri penyaringan ini ke dalam CTE bernama recent_orders agar agregasinya terbaca dengan jelas.

Menunjukkan bahwa Anda memilih CTE demi kejelasan dan penggunaan ulang, bukan secara membabi buta, menandakan kematangan tingkat menengah. Sebutkan bahwa CTE tidak secara inheren membuat kueri lebih cepat; nilai utamanya adalah keterbacaan.

Pemeriksaan Cepat

Uji pemahaman Anda tentang sintaks dasar CTE dan cakupannya.

Rekapitulasi: CTE Pertama Anda

Anda telah mempelajari bahwa CTE menggunakan WITH name AS ( ... ) untuk memberi nama pada himpunan hasil sementara, lalu mereferensikannya seperti tabel dalam pernyataan berikutnya.

  • CTE meningkatkan keterbacaan, penggunaan ulang, dan kemudahan penelusuran kesalahan dibandingkan subkueri langsung.
  • Cakupannya terbatas pada satu pernyataan; setelah itu CTE tersebut hilang.
  • CTE dapat digunakan dengan SELECT serta dengan INSERT/UPDATE/DELETE.
  • CTE tidak secara otomatis meningkatkan kinerja.

Berikutnya: merangkai beberapa CTE menjadi sebuah alur pemrosesan.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Menulis CTE Pertama Anda” gratis?

Ya — teks lengkap “Menulis CTE Pertama Anda” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Interview Prep, upgrade ke CoddyKit PRO. Kursus SQL Interview Prep mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Menulis CTE Pertama Anda”?

Pelajari sintaks dasar WITH dan kapan CTE meningkatkan keterbacaan dibandingkan subkueri. Kamu berlatih SQL Interview Prep dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai SQL Interview Prep?

Tidak diperlukan pengalaman sebelumnya. SQL Interview Prep di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Menulis CTE Pertama Anda” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Interview Prep ini?

Ya. Setiap pelajaran SQL Interview Prep menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Menulis CTE Pertama Anda
  2. Merangkai Beberapa CTE
  3. CTE vs Subkueri vs Tabel Sementara
  4. Memfaktorkan Ulang Kueri Bersarang Menjadi CTE
← Kembali ke SQL Interview Prep