Agregat funksiyalar bir nechta qatordan yagona natija hisoblab beradi.
Agregat funksiyalar
SELECT
COUNT(*) AS jami_talabalar,
AVG(yosh) AS ortacha_yosh,
MIN(yosh) AS eng_yosh,
MAX(yosh) AS eng_katta,
SUM(to'lov) AS jami_tulangan
FROM talabalar;
GROUP BY
-- Shahar bo'yicha talabalar soni
SELECT shahar, COUNT(*) AS soni
FROM talabalar
GROUP BY shahar
ORDER BY soni DESC;
-- Kurs bo'yicha o'rtacha baho
SELECT kurs_id, AVG(baho) AS ortacha_baho
FROM baholar
GROUP BY kurs_id;
HAVING โ guruhlarni filtrlash
WHERE agregat funksiyalar bilan ishlamaydi, HAVING ishlatiladi:
-- 5 dan ko'p talabasi bor shaharlar
SELECT shahar, COUNT(*) AS soni
FROM talabalar
GROUP BY shahar
HAVING COUNT(*) > 5
ORDER BY soni DESC;
WHERE va HAVING birga
SELECT kurs, AVG(baho) AS ortacha
FROM baholar
WHERE sana >= '2024-01-01' -- avval filtrlash
GROUP BY kurs
HAVING AVG(baho) > 70 -- guruhlarni filtrlash
ORDER BY ortacha DESC;
ROLLUP bilan jami
SELECT shahar, kurs, COUNT(*) AS soni
FROM talabalar
GROUP BY ROLLUP(shahar, kurs);