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...