Lewati ke konten utama
SQL Fundamentals

Lesson 02 / Advanced Querying

CTE

Membuat hasil sementara bernama dengan WITH.

EST. 20 MIN

Common Table Expression

CTE memakai WITH untuk memberi nama pada hasil sementara. Ini membuat query panjang lebih mudah dibaca dan diuji bertahap.

Tujuan belajar

Setelah lesson ini, kamu dapat menyusun hasil sementara bernama dengan WITH dan menggunakannya pada query akhir yang lebih mudah dibaca.

WITH city_sales AS (
    SELECT stores.city, SUM(sales.total_amount) AS total_sales
    FROM sales
    JOIN stores ON stores.store_id = sales.store_id
    GROUP BY stores.city
)
SELECT *
FROM city_sales;

CTE hanya hidup selama query tersebut berjalan, bukan tabel permanen di database.

Query panjang menjadi langkah bernama

CTE memisahkan query menjadi langkah yang dapat dibaca seperti konsep bisnis.

WITH city_sales AS (
    SELECT stores.city, SUM(sales.total_amount) AS total_sales
    FROM sales
    JOIN stores ON stores.store_id = sales.store_id
    GROUP BY stores.city
)
SELECT city, total_sales
FROM city_sales
WHERE total_sales > 1000000
ORDER BY total_sales DESC;

Beberapa CTE dipisahkan dengan koma. Pakai nama yang menjelaskan isi data, seperti completed_orders atau monthly_revenue.

Coba sendiri

Buat CTE city_sales dari tabel sales dan stores, lalu tampilkan kota dan total penjualan dari yang terbesar. Kerjakan agregasi di CTE, bukan di query akhir.

Jebakan umum

CTE tidak menyimpan hasil untuk query berikutnya. Ia adalah alat untuk struktur dan keterbacaan dalam satu perintah SQL.

Practice

Latihan

01 EXERCISE

  1. EXERCISE 01 / GUIDED_PRACTICE

    Susun total penjualan per kota

    Buat CTE bernama city_sales yang menggabungkan sales dan stores, lalu tampilkan kota serta total penjualannya dari yang terbesar.

    FOCUS
    Common table expression
    DATASET
    Retail
    ESTIMATED MINUTES
    8

    Practice workspace

    Tulis dan jalankan query

    Menyiapkan SQL runtime...

    Dataset: Retail. Query berjalan lokal di browser.

    Hasil query

    0 ROWS

    Jalankan query untuk menampilkan hasil di sini.

    Masuk untuk menandai latihan selesai.