Ko'pchilik SQL'ni "bilaman" deb o'ylaydi. Lekin ish suhbatida oddiy JOIN yoki Window funksiya so'ralganda qotib qoladi.
Sababi oddiy β video ko'rish bilan SQL o'rganilmaydi. SQL faqat yozib, xato qilib, tuzatib o'rganiladi.
Bunda sizga sqlmaster.uz yordam beradi.
Bu β sof amaliyot platformasi. Dars yo'q, faqat masalalar:
πΉ 200+ masala (60+ saytga joylangan) β Uzum, Click, taksi kabi real biznes mavzularida
πΉ SQL yozasiz, tizim darrov tekshiradi
πΉ JOIN, Subquery, Window, CTE, Agregatsiya β mavzu bo'yicha mashq qiling
πΌ Oson'dan Qiyin'gacha bosqichma-bosqich
Data analitikaga kirmoqchi bo'lsangiz β bu yerdan boshlang.
π₯ sqlmaster.uz β bepul, hoziroq sinab ko'ring.
Rasmiy kanal: @sqlmasteruz
Sababi oddiy β video ko'rish bilan SQL o'rganilmaydi. SQL faqat yozib, xato qilib, tuzatib o'rganiladi.
Bunda sizga sqlmaster.uz yordam beradi.
Bu β sof amaliyot platformasi. Dars yo'q, faqat masalalar:
πΉ 200+ masala (60+ saytga joylangan) β Uzum, Click, taksi kabi real biznes mavzularida
πΉ SQL yozasiz, tizim darrov tekshiradi
πΉ JOIN, Subquery, Window, CTE, Agregatsiya β mavzu bo'yicha mashq qiling
Data analitikaga kirmoqchi bo'lsangiz β bu yerdan boshlang.
Rasmiy kanal: @sqlmasteruz
Please open Telegram to view this post
VIEW IN TELEGRAM
SQL Master πΊπΏ: Ish suhbatida "JOIN yozib bering" deyishsa β ko'pchilik shu yerda to'xtaydi. Nazariya yetarli emas; SQL'ni masala yechib, xato qilib, tuzatib o'rganasiz.
Shuning uchun sqlmaster.uz da 200+ masala yig'ilgan π:
πΉ Real biznes vaziyatlari: Uzum, Click, taksi
πΉ Yozasiz β tizim darrov tekshiradi
πΉ Mavzular: JOIN, Subquery, Window, CTE, Agregatsiya
πΉ Bosqichma-bosqich: Oson β O'rtacha β Qiyin
Bugun 10 ta masala yeching β ertaga suhbatda qotmaysiz.
πΎ sqlmaster.uz β bepul, hozir sinab ko'ring.
Rasmiy kanal: @sqlmasteruz
Shuning uchun sqlmaster.uz da 200+ masala yig'ilgan π:
πΉ Real biznes vaziyatlari: Uzum, Click, taksi
πΉ Yozasiz β tizim darrov tekshiradi
πΉ Mavzular: JOIN, Subquery, Window, CTE, Agregatsiya
πΉ Bosqichma-bosqich: Oson β O'rtacha β Qiyin
Bugun 10 ta masala yeching β ertaga suhbatda qotmaysiz.
πΎ sqlmaster.uz β bepul, hozir sinab ko'ring.
Rasmiy kanal: @sqlmasteruz
β‘1π₯1π1π1π1
Endi masalani yechish bilan cheklanib qolmaysiz β Muhokama bo'limini qo'shdik π¬; chunki "Ikki odamning birga yurgani bir odamdan yaxshiroqdir" degan hikmatdayin, o'rganish ham birgalikda bo'lganda ma'no topadi.
Har bir masalada endi:
πΉ O'z yondashuvingizni boshqalar bilan bo'lishasiz;
πΉ Qotib qolgan joyingizda savol berasiz;
πΉ Boshqalarga yordam berib, o'zingiz ham mustahkamlaysiz; chunki "Berish olishdan yaxshiroqdir" degan so'z bo'ldi.
Bitta masalaning 5 xil yechimi bo'ladi β birov subquery bilan, birov window funksiya bilan. Ana shu farqni ko'rish orqali chinakam o'rganiladi; chunki "Ishoning, ko'ring, va o'zingiz qiling".
Masalani yeching β Muhokama bo'limiga o'ting β birinchi izohni siz qoldiring π
π sqlmaster.uz β bepul, hoziroq sinab ko'ring.
Rasmiy kanal: @sqlmasteruz
Har bir masalada endi:
πΉ O'z yondashuvingizni boshqalar bilan bo'lishasiz;
πΉ Qotib qolgan joyingizda savol berasiz;
πΉ Boshqalarga yordam berib, o'zingiz ham mustahkamlaysiz; chunki "Berish olishdan yaxshiroqdir" degan so'z bo'ldi.
Bitta masalaning 5 xil yechimi bo'ladi β birov subquery bilan, birov window funksiya bilan. Ana shu farqni ko'rish orqali chinakam o'rganiladi; chunki "Ishoning, ko'ring, va o'zingiz qiling".
Masalani yeching β Muhokama bo'limiga o'ting β birinchi izohni siz qoldiring π
Rasmiy kanal: @sqlmasteruz
Please open Telegram to view this post
VIEW IN TELEGRAM
β1π’1π€©1π1
LEFT JOIN yozdingiz, lekin u INNER JOIN bo'lib qoldi π€¦ββοΈ
Bu β SQL suhbatlarida eng ko'p "yiqitadigan" xato.
Vazifa: har bir mijozni va uning yanvardagi buyurtmalari sonini chiqaring. Buyurtma bermaganlar ham ro'yxatda 0 bilan turishi kerak.
Ko'pchilik shunday yozadi π
Natija: yanvarda buyurtma bermagan mijozlar umuman yo'qoladi.
Sababi oddiy:
LEFT JOIN avval o'ng jadvaldan mos qator topmasa,
To'g'ri variant β filtrni
π Yodda tuting:
ON β join qilishdan oldin o'ng jadvalni filtrlaydi
WHERE β join tugagandan keyin butun natijani filtrlaydi
Va yana bir tuzoq: bu yerda
Shunga o'xshash 200+ masala π sqlmaster.uz
Rasmiy kanal: @sqlmasteruz
Bu β SQL suhbatlarida eng ko'p "yiqitadigan" xato.
Vazifa: har bir mijozni va uning yanvardagi buyurtmalari sonini chiqaring. Buyurtma bermaganlar ham ro'yxatda 0 bilan turishi kerak.
Ko'pchilik shunday yozadi π
SELECT c.name, COUNT(o.id) AS orders
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
WHERE o.created_at >= '2026-01-01'
GROUP BY c.name;
Natija: yanvarda buyurtma bermagan mijozlar umuman yo'qoladi.
Sababi oddiy:
LEFT JOIN avval o'ng jadvaldan mos qator topmasa,
o.* ustunlarini NULL qilib qo'yadi. Keyin WHERE o.created_at >= ... ishga tushadi va o'sha NULL qatorlarni o'chirib tashlaydi. Ya'ni siz yozgan LEFT JOIN amalda INNER JOIN.To'g'ri variant β filtrni
ON ichiga olish πSELECT c.name, COUNT(o.id) AS orders
FROM customers c
LEFT JOIN orders o
ON o.customer_id = c.id
AND o.created_at >= '2026-01-01'
GROUP BY c.name;
π Yodda tuting:
ON β join qilishdan oldin o'ng jadvalni filtrlaydi
WHERE β join tugagandan keyin butun natijani filtrlaydi
Va yana bir tuzoq: bu yerda
COUNT(*) emas, COUNT(o.id) yozilgan. COUNT(*) buyurtmasi yo'q mijozga ham 1 deb ko'rsatadi, chunki NULL bo'lsa ham qator mavjud.Shunga o'xshash 200+ masala π sqlmaster.uz
Rasmiy kanal: @sqlmasteruz
Marhamat β fan-out (dublikat qatorlar) mavzusidagi post:
JOIN dan keyin summangiz 3 barobar oshib ketdimi? π
Hisobot yozdingiz, raqam boshliqqa ketdi, keyin ma'lum bo'ldi β savdo hajmi aslida uch barobar kam. Tanish holat.
Vazifa: har bir mijoz bo'yicha umumiy buyurtma summasi va sotib olingan mahsulotlar soni.
Ko'pchilik shunday yozadi π
Muammo: bitta buyurtmada 3 ta mahsulot bo'lsa, JOIN o'sha buyurtmani 3 marta takrorlaydi. Demak
Ya'ni bitta so'rovda bir ustun to'g'ri, ikkinchisi noto'g'ri β shuning uchun ham bu xatoni payqash qiyin.
Sabab: JOIN 1:N munosabatda chap jadvalning qatorini ko'paytiradi (fan-out). Agar ikkita 1:N jadval qo'shsangiz β qatorlar ko'payib emas, ko'paytirilib ketadi (3 ta mahsulot Γ 2 ta to'lov = 6 qator).
Yechim: har bir darajani alohida agregatsiya qilib, keyin join qiling π
π Tekshirish usuli: JOIN dan oldin va keyin
β οΈ
Amaliyot π sqlmaster.uz
Rasmiy kanal: @sqlmasteruz
JOIN dan keyin summangiz 3 barobar oshib ketdimi? π
Hisobot yozdingiz, raqam boshliqqa ketdi, keyin ma'lum bo'ldi β savdo hajmi aslida uch barobar kam. Tanish holat.
Vazifa: har bir mijoz bo'yicha umumiy buyurtma summasi va sotib olingan mahsulotlar soni.
Ko'pchilik shunday yozadi π
SELECT c.name,
SUM(o.amount) AS jami_summa,
SUM(i.quantity) AS mahsulotlar
FROM customers c
JOIN orders o ON o.customer_id = c.id
JOIN order_items i ON i.order_id = o.id
GROUP BY c.name;
Muammo: bitta buyurtmada 3 ta mahsulot bo'lsa, JOIN o'sha buyurtmani 3 marta takrorlaydi. Demak
o.amount ham 3 marta qo'shiladi.SUM(o.amount) = xato. SUM(i.quantity) = to'g'ri.Ya'ni bitta so'rovda bir ustun to'g'ri, ikkinchisi noto'g'ri β shuning uchun ham bu xatoni payqash qiyin.
Sabab: JOIN 1:N munosabatda chap jadvalning qatorini ko'paytiradi (fan-out). Agar ikkita 1:N jadval qo'shsangiz β qatorlar ko'payib emas, ko'paytirilib ketadi (3 ta mahsulot Γ 2 ta to'lov = 6 qator).
Yechim: har bir darajani alohida agregatsiya qilib, keyin join qiling π
WITH ord AS (
SELECT customer_id, SUM(amount) AS jami_summa
FROM orders
GROUP BY customer_id
),
itm AS (
SELECT o.customer_id, SUM(i.quantity) AS mahsulotlar
FROM orders o
JOIN order_items i ON i.order_id = o.id
GROUP BY o.customer_id
)
SELECT c.name, ord.jami_summa, itm.mahsulotlar
FROM customers c
LEFT JOIN ord ON ord.customer_id = c.id
LEFT JOIN itm ON itm.customer_id = c.id;
π Tekshirish usuli: JOIN dan oldin va keyin
COUNT(*) ni solishtiring. Qatorlar soni oshgan bo'lsa β join kaliti o'ng jadvalda unikal emas, demak summalaringizga ishonmang.β οΈ
SUM(DISTINCT o.amount) bilan "tuzatmang" β ikki mijozning summasi tasodifan teng bo'lsa, bittasi yo'qoladi.Amaliyot π sqlmaster.uz
Rasmiy kanal: @sqlmasteruz
β Ertalabki savol
Shu so'rov nima qaytaradi? π
A) 100 va 100
B) 100 va 70
C) 70 va 70
Javobingizni izohda yozing β bugun 20:00 da tahlil qilamiz π
ββββββββ
πΎ Amaliyot: sqlmaster.uz
π’ @sqlmasteruz
users jadvalida 100 ta qator bor. Ulardan 30 tasida phone ustuni NULL.Shu so'rov nima qaytaradi? π
SELECT COUNT(*), COUNT(phone)
FROM users;
A) 100 va 100
B) 100 va 70
C) 70 va 70
Javobingizni izohda yozing β bugun 20:00 da tahlil qilamiz π
ββββββββ
πΎ Amaliyot: sqlmaster.uz
π’ @sqlmasteruz
β οΈ NOT IN sizni jimgina aldaydi
Vazifa: hech qachon buyurtma bermagan mijozlarni toping.
Ko'pchilik shunday yozadi π
Natija: bo'sh jadval. Bitta ham mijoz chiqmaydi, holbuki ular bor.
Sabab.
To'g'ri variant π
Yoki
π Qoida:
Bu tuzoq ish suhbatlarida ataylab so'raladi.
π― Endi amaliyot: Qora ro'yxatda bo'lmagan mijozlar (NULL tuzog'i)
Aynan shu tuzoq ustiga qurilgan masala. NOT EXISTS bilan yozib ko'ring π
ββββββββ
πΎ Amaliyot: sqlmaster.uz
π’ @sqlmasteruz
Vazifa: hech qachon buyurtma bermagan mijozlarni toping.
Ko'pchilik shunday yozadi π
SELECT name
FROM customers
WHERE id NOT IN (SELECT customer_id FROM orders);
Natija: bo'sh jadval. Bitta ham mijoz chiqmaydi, holbuki ular bor.
Sabab.
orders.customer_id ustunida bitta NULL bo'lsa yetarli. id NOT IN (1, 2, NULL) ifodasi hech qachon TRUE bo'lmaydi β u UNKNOWN qaytaradi, chunki SQL Β«bu qiymat NULL ga teng emasmi?Β» degan savolga javob bera olmaydi. WHERE esa faqat TRUE qatorlarni o'tkazadi.To'g'ri variant π
SELECT c.name
FROM customers c
WHERE NOT EXISTS (
SELECT 1 FROM orders o
WHERE o.customer_id = c.id
);
Yoki
LEFT JOIN ... IS NULL orqali:SELECT c.name
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
WHERE o.id IS NULL;
π Qoida:
NOT IN faqat ustun NOT NULL ekaniga ishonchingiz komil bo'lsa. Aks holda doim NOT EXISTS.Bu tuzoq ish suhbatlarida ataylab so'raladi.
π― Endi amaliyot: Qora ro'yxatda bo'lmagan mijozlar (NULL tuzog'i)
Aynan shu tuzoq ustiga qurilgan masala. NOT EXISTS bilan yozib ko'ring π
ββββββββ
πΎ Amaliyot: sqlmaster.uz
π’ @sqlmasteruz
β
Ertalabki savol javobi: B β 100 va 70
Bu farq hisobotlarda jimgina xato keltirib chiqaradi.
π Yodda tuting:
β οΈ Xuddi shu mantiq
Maoshi kiritilmagan (NULL) xodimlar o'rtachaga umuman qo'shilmaydi. Ularni nol deb hisoblamoqchi bo'lsangiz:
Ikki so'rov ikki xil raqam qaytaradi β qaysi biri to'g'ri ekanini siz hal qilasiz, baza emas.
π¬ Shu xatoga duch kelganmisiz? Izohda yozing.
π― Endi amaliyot: O'rtacha: NULL larni hisobga olish
O'qib tushundingiz β endi o'zingiz yozib ko'ring π
ββββββββ
πΎ Amaliyot: sqlmaster.uz
π’ @sqlmasteruz
COUNT(*) qatorlarni sanaydi β 100 ta.COUNT(phone) esa faqat NULL bo'lmagan qiymatlarni sanaydi β 70 ta.Bu farq hisobotlarda jimgina xato keltirib chiqaradi.
π Yodda tuting:
COUNT(*) β qatorlar soniCOUNT(ustun) β NULL bo'lmagan qiymatlar soniCOUNT(1) β COUNT(*) bilan bir xil, tezligi ham bir xilCOUNT(DISTINCT ustun) β takrorlanmaydigan qiymatlarβ οΈ Xuddi shu mantiq
AVG va SUM ga ham tegishli:SELECT AVG(salary) FROM employees;
Maoshi kiritilmagan (NULL) xodimlar o'rtachaga umuman qo'shilmaydi. Ularni nol deb hisoblamoqchi bo'lsangiz:
SELECT AVG(COALESCE(salary, 0)) FROM employees;
Ikki so'rov ikki xil raqam qaytaradi β qaysi biri to'g'ri ekanini siz hal qilasiz, baza emas.
π¬ Shu xatoga duch kelganmisiz? Izohda yozing.
π― Endi amaliyot: O'rtacha: NULL larni hisobga olish
O'qib tushundingiz β endi o'zingiz yozib ko'ring π
ββββββββ
πΎ Amaliyot: sqlmaster.uz
π’ @sqlmasteruz
status ustunida NULL qatorlar bor. Β«SELECT * FROM tasks WHERE status <> 'active'Β» β o'sha NULL qatorlar natijaga chiqadimi?
Anonymous Quiz
0%
Ha, chiqadi
100%
Yo'q, chiqmaydi
0%
Bazaga bog'liq
π₯1
π’ SQL so'rovi siz yozgan tartibda bajarilmaydi
Siz
1οΈβ£
2οΈβ£
3οΈβ£
4οΈβ£
5οΈβ£
6οΈβ£
7οΈβ£
Shundan kelib chiqadigan uchta amaliy xulosa:
β
β To'g'risi:
β
β
π Qoida:
π― Endi amaliyot: HAVING ichida subquery
O'qib tushundingiz β endi o'zingiz yozib ko'ring π
ββββββββ
πΎ Amaliyot: sqlmaster.uz
π’ @sqlmasteruz
Siz
SELECT dan boshlab yozasiz, baza esa boshqa tartibda ishlaydi:1οΈβ£
FROM va JOIN β jadvallar birlashtiriladi2οΈβ£
WHERE β qatorlar filtrlanadi3οΈβ£
GROUP BY β guruhlanadi4οΈβ£
HAVING β guruhlar filtrlanadi5οΈβ£
SELECT β ustunlar tanlanadi, alias shu yerda paydo bo'ladi6οΈβ£
ORDER BY β saralanadi7οΈβ£
LIMIT β kesiladiShundan kelib chiqadigan uchta amaliy xulosa:
β
WHERE da alias ishlatib bo'lmaydi β u hali mavjud emas:SELECT price * 1.12 AS total
FROM products
WHERE total > 100; -- xato!
β To'g'risi:
WHERE price * 1.12 > 100β
ORDER BY da esa alias ishlaydi β u SELECT dan keyin bajariladi.β
WHERE ichida SUM() yozib bo'lmaydi β guruhlash hali bo'lmagan. Agregat bo'yicha filtr faqat HAVING da:SELECT customer_id, SUM(amount) AS jami
FROM orders
WHERE status = 'paid' -- qatorlarni filtrlaydi
GROUP BY customer_id
HAVING SUM(amount) > 1000000; -- guruhlarni filtrlaydi
π Qoida:
WHERE β guruhlashdan oldin, HAVING β keyin. Filtrni iloji boricha WHERE ga qo'ying: kamroq qator guruhlanadi, so'rov tezroq ishlaydi.π― Endi amaliyot: HAVING ichida subquery
O'qib tushundingiz β endi o'zingiz yozib ko'ring π
ββββββββ
πΎ Amaliyot: sqlmaster.uz
π’ @sqlmasteruz
π1
β
Ertalabki test javobi: NULL qatorlar chiqmaydi
SQL ikki qiymatli emas, uch qiymatli mantiq bilan ishlaydi:
Yechimlar:
Uchinchisi eng toza:
β οΈ Eng xavflisi shundaki, bunday so'rov xato bermaydi. Shunchaki qatorlar yo'qoladi β hisobotdagi raqam kamayadi, siz esa sezmaysiz.
π¬ Sizning bazangizda qaysi ustunlar NULL bo'lishi mumkin? Bir tekshirib ko'ring π
π― Endi amaliyot: NULL: uch qiymatli mantiq tuzog'i
O'qib tushundingiz β endi o'zingiz yozib ko'ring π
ββββββββ
πΎ Amaliyot: sqlmaster.uz
π’ @sqlmasteruz
SQL ikki qiymatli emas, uch qiymatli mantiq bilan ishlaydi:
TRUE, FALSE va UNKNOWN.NULL <> 'active' β UNKNOWNNULL = NULL β UNKNOWN (ha, NULL o'ziga ham teng emas!)WHERE esa faqat TRUE bo'lgan qatorlarni o'tkazadi. UNKNOWN β tashlab yuboriladi.Yechimlar:
-- 1. Ochiq-oydin qo'shish
WHERE status <> 'active' OR status IS NULL
-- 2. NULL ni qiymatga aylantirish
WHERE COALESCE(status, 'none') <> 'active'
-- 3. PostgreSQL usuli
WHERE status IS DISTINCT FROM 'active'
Uchinchisi eng toza:
IS DISTINCT FROM NULL ni oddiy qiymat kabi solishtiradi.β οΈ Eng xavflisi shundaki, bunday so'rov xato bermaydi. Shunchaki qatorlar yo'qoladi β hisobotdagi raqam kamayadi, siz esa sezmaysiz.
π¬ Sizning bazangizda qaysi ustunlar NULL bo'lishi mumkin? Bir tekshirib ko'ring π
π― Endi amaliyot: NULL: uch qiymatli mantiq tuzog'i
O'qib tushundingiz β endi o'zingiz yozib ko'ring π
ββββββββ
πΎ Amaliyot: sqlmaster.uz
π’ @sqlmasteruz