Learn
← Previous Next →

Hari 21: Subquery di WHERE

55 min Last updated 25 Mar 2026

Subquery — Query di Dalam Query

Subquery adalah SELECT yang bersarang di dalam query lain. Query dalam tanda kurung dieksekusi lebih dulu.

Subquery di WHERE

-- Produk yang harganya di atas rata-rata
SELECT nama_produk, harga
FROM produk
WHERE harga > (SELECT AVG(harga) FROM produk)
ORDER BY harga DESC;

-- Pelanggan yang pernah pesan lebih dari rata-rata pesanan
SELECT nama FROM pelanggan
WHERE id IN (
  SELECT pelanggan_id
  FROM pesanan
  GROUP BY pelanggan_id
  HAVING COUNT(*) > (SELECT AVG(cnt) FROM (
    SELECT COUNT(*) AS cnt FROM pesanan GROUP BY pelanggan_id
  ))
);

Scalar Subquery

-- Subquery yang mengembalikan 1 nilai
SELECT nama_produk, harga,
  harga - (SELECT AVG(harga) FROM produk) AS selisih_dari_rata
FROM produk
ORDER BY selisih_dari_rata DESC;

💡 Notice: Subquery di WHERE harus mengembalikan satu nilai jika dipakai dengan operator =, >, <.

Assignment

Tampilkan nama_produk dan harga dari produk yang harganya di atas rata-rata harga semua produk. Urutkan dari termahal.

Expected output:

4 row(s) returned
SQL query.sql
Solution
Output
⏳ Loading DB...