SQLab
O‘rganishMashqMasalalarArenaReyting
© 2026 SQLab · Toshkent
SQLab

SQL’ni o‘rnatmasdan, brauzerning o‘zida o‘rganing.

Platforma

  • O‘rganish
  • Mashq
  • Masalalar
  • Arena
  • Reyting

Kimlar uchun

  • Talabalar
  • Ustozlar
  • Universitetlar
© 2026 SQLab. Barcha huquqlar himoyalangan.O‘zbekistonda, talabalar uchun yaratilgan.
O‘rganishMashqMasalalarArenaReyting
0/26

Asoslar

  • Ma’lumotlar bazasi nima?
  • Birinchi SELECT
  • WHERE: kerakli qatorlarni tanlash
  • IN, BETWEEN, LIKE va NULL
  • Saralash, LIMIT va DISTINCT

Hisob-kitob

  • Ifodalar, funksiyalar va CASE
  • Sanalar bilan ishlash
  • COUNT, SUM, AVG, MIN, MAX
  • GROUP BY va HAVING

Jadvallarni ulash

  • Kalitlar va bog‘lanishlar
  • INNER JOIN
  • LEFT JOIN va juftsiz qatorlar
  • Bir nechta jadval va self join

Murakkab so‘rovlar

  • Ichki so‘rovlar
  • UNION, INTERSECT, EXCEPT
  • WITH: nomlangan so‘rovlar
  • Oyna funksiyalari

Jadval yaratish va o‘zgartirish

  • CREATE TABLE: turlar va cheklovlar
  • INSERT, UPDATE, DELETE
  • ALTER, DROP, TRUNCATE
  • Bazani to‘g‘ri loyihalash

Professional daraja

  • Indekslar va EXPLAIN
  • Tranzaksiyalar va ACID
  • VIEW: saqlangan so‘rovlar
  • Funksiyalar, protseduralar, triggerlar
  • Foydalanuvchilar, huquqlar, zaxira nusxa
O‘rganish/Murakkab so‘rovlar

WITH: nomlangan so‘rovlar

168 daq

Murakkab so‘rovlar tezda chalkashib ketadi: ichki so‘rov ichida ichki so‘rov… WITH (CTE — Common Table Expression) ularni nomlangan, tartibli qadamlarga ajratadi.

Qolip

WITH nom AS (
  SELECT …
)
SELECT … FROM nom;

nom — shu so‘rov davomida mavjud bo‘ladigan vaqtinchalik jadval.

Misol: o‘rtacha balli talabalar

Avval har bir talabaning o‘rtacha balini hisoblaymiz, keyin undan foydalanamiz:

university· O‘zgartirib ko‘ring
WITH avg_scores AS (
  SELECT student_id, AVG(score) AS avg_score
  FROM grades
  GROUP BY student_id
)
SELECT s.first_name, s.last_name, ROUND(a.avg_score, 1) AS avg_score
FROM avg_scores a
JOIN students s ON s.id = a.student_id
WHERE a.avg_score >= 85
ORDER BY a.avg_score DESC;

Xuddi shuni ichki so‘rov bilan ham yozsa bo‘ladi, lekin WITH bilan o‘qish ancha oson: har bir qadamning nomi bor.

Bir nechta CTE

Vergul bilan ketma-ket yoziladi, keyingisi oldingisidan foydalana oladi:

shop· O‘zgartirib ko‘ring
WITH order_totals AS (
  SELECT order_id, SUM(quantity * unit_price) AS total
  FROM order_items
  GROUP BY order_id
),
big_orders AS (
  SELECT order_id FROM order_totals WHERE total > 10000000
)
SELECT o.payment_method, COUNT(*) AS big_orders
FROM big_orders b
JOIN orders o ON o.id = b.order_id
GROUP BY o.payment_method;

Rekursiv CTE

WITH RECURSIVE o‘zini o‘zi chaqiradi — daraxtsimon ma’lumot uchun (rahbar → bo‘ysunuvchi → uning bo‘ysunuvchisi…):

company· O‘zgartirib ko‘ring
WITH RECURSIVE chain AS (
  SELECT id, first_name, manager_id, 1 AS level FROM employees WHERE manager_id IS NULL
  UNION ALL
  SELECT e.id, e.first_name, e.manager_id, c.level + 1
  FROM employees e JOIN chain c ON e.manager_id = c.id
)
SELECT level, COUNT(*) AS people FROM chain GROUP BY level ORDER BY level;

Birinchi qism — boshlang‘ich nuqta (bosh direktor), ikkinchisi — har safar bir pog‘ona pastga tushadi.

1Mashq

WITH yordamida har bir haydovchining yakunlangan safarlar sonini hisoblang va 40 tadan ko‘p safari borlarning driver_id va safarlar sonini chiqaring.


Esda qoldiring

  • WITH nom AS (…) — so‘rovni nomlangan qadamlarga bo‘ladi.
  • Bir nechta CTE vergul bilan; keyingisi oldingisini ishlata oladi.
  • WITH RECURSIVE — daraxt va zanjirlar uchun.
Oldingi darsUNION, INTERSECT, EXCEPTKeyingi darsOyna funksiyalari

Mundarija

  • Qolip
  • Misol: o‘rtacha balli talabalar
  • Bir nechta CTE
  • Rekursiv CTE
  • Esda qoldiring
O‘rganishMashqMasalalarArenaReyting

SQLab