Ko'pincha bizga jadvaldagi qiymatlardan eng kichigi yoki eng kattasi kerak bo'ladi. Masalan: "Eng arzon mahsulot qancha turadi?" yoki "Eng qimmat mahsulotning narxi qancha?".
Buning uchun ikkita agregat funksiya mavjud:
Bu darsda biz mahsulotlar jadvali bilan ishlaymiz:
| id | nomi | kategoriya | narx | ombor |
|---|---|---|---|---|
| 1 | Telefon | Elektronika | 5000000 | 10 |
| 2 | Noutbuk | Elektronika | 12000000 | 5 |
| 3 | Quloqchin | Elektronika | 300000 | 50 |
| 4 | Kitob | Kitoblar | 50000 | 100 |
| 5 | Daftar | Kanstovar | 8000 | 200 |
| 6 | Ruchka | Kanstovar | 3000 | 500 |
| 7 | Stol | Mebel | 800000 | 15 |
| 8 | Stul | Mebel | 250000 | 40 |
Eng arzon mahsulotning narxini topish uchun MIN ni narx ustuniga qo'llaymiz:
SELECT MIN(narx) FROM mahsulotlar;Funksiya butun ustunni ko'rib chiqadi va undagi eng kichik sonni qaytaradi. Bizning jadvalda eng arzon mahsulot — Ruchka (3000 so'm), shuning uchun natija bitta qiymatdan iborat:
3000MAX esa, aksincha, ustundagi eng katta qiymatni qaytaradi. Eng qimmat mahsulotning narxini topamiz:
SELECT MAX(narx) FROM mahsulotlar;Eng qimmat mahsulot — Noutbuk (12000000 so'm), demak natija:
12000000Eslatma:
MINvaMAXfaqat sonlar bilan emas, matn bilan ham ishlaydi. Matnda eng kichik — alifbo bo'yicha birinchi, eng katta — oxirgi qiymat hisoblanadi.
SELECT dan keyin bir nechta funksiyani vergul bilan ajratib yozish mumkin. Shunday qilib, eng arzon va eng qimmat narxni bitta so'rovda olamiz:
SELECT MIN(narx), MAX(narx) FROM mahsulotlar;Natija bitta qatorda, ikkita ustun bo'lib chiqadi (avval MIN, keyin MAX):
3000|12000000Muhim:
MIN(narx)vaMAX(narx)butun jadvalni ko'rib, faqat bitta qator qaytaradi. Shuning uchun bu yerdaORDER BYshart emas — natija doimo bir xil bo'ladi.
Pastdagi kod oynasida mahsulotlar jadvali allaqachon yaratilgan va to'ldirilgan. Sizning vazifangiz — mahsulotlar orasidagi eng arzon (MIN) va eng qimmat (MAX) narxni bitta SELECT so'rovida chiqarish.