Subquery โ boshqa so'rov ichidagi so'rov.
WHERE ichida subquery
-- O'rtachadan baland narxli mahsulotlar
SELECT nomi, narx
FROM mahsulotlar
WHERE narx > (SELECT AVG(narx) FROM mahsulotlar);
-- Eng ko'p buyurtma bergan mijoz
SELECT ism
FROM mijozlar
WHERE id = (
SELECT mijoz_id
FROM buyurtmalar
GROUP BY mijoz_id
ORDER BY COUNT(*) DESC
LIMIT 1
);
IN bilan subquery
-- Kamida bitta buyurtma bergan mijozlar
SELECT ism
FROM mijozlar
WHERE id IN (SELECT DISTINCT mijoz_id FROM buyurtmalar);
-- Hech buyurtma bermagan mijozlar
SELECT ism
FROM mijozlar
WHERE id NOT IN (SELECT DISTINCT mijoz_id FROM buyurtmalar);
FROM ichida subquery (derived table)
SELECT shahar, ortacha_yosh
FROM (
SELECT shahar, AVG(yosh) AS ortacha_yosh
FROM talabalar
GROUP BY shahar
) AS shahar_statistika
WHERE ortacha_yosh > 25;
CTE (Common Table Expression)
Subquery o'rniga yanada o'qimishli yozish:
WITH yuqori_talabalar AS (
SELECT talaba_id, AVG(baho) AS ortacha
FROM baholar
GROUP BY talaba_id
HAVING AVG(baho) >= 85
)
SELECT t.ism, yt.ortacha
FROM talabalar t
INNER JOIN yuqori_talabalar yt ON t.id = yt.talaba_id;