Hozirgacha SELECT bilan jadvalda mavjud ustunlarni chiqarib keldik — nomi, narx, ombor va hokazo. Lekin ba'zan bizga jadvalda yo'q bo'lgan, ammo mavjud ustunlardan hisoblab chiqariladigan qiymat kerak bo'ladi.
Masalan, har bir mahsulotning narxi va ombordagi soni bor. Demak, biz ombordagi umumiy qiymatni (narx ni ombordagi songa ko'paytirib) hisoblab chiqarishimiz mumkin. Mana shunday, hisoblab olinadigan ustunni hisoblangan ustun (calculated column) deb ataymiz.
Misollarni mahsulotlar jadvalida ko'rib chiqamiz:
| 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 |
SQL da SELECT ichida oddiy kalkulyatordagi kabi arifmetik amallarni bajarish mumkin. To'rtta asosiy amal bor:
| Belgi | Ma'nosi | Misol |
|---|---|---|
+ | qo'shish | narx + 100 |
- | ayirish | ombor - 1 |
* | ko'paytirish | narx * 2 |
/ | bo'lish | narx / 1000 |
Bu amallarni to'g'ridan-to'g'ri ustun nomlari bilan ishlatamiz. Masalan, har bir mahsulotning narxini va narxning ikki barobarini chiqaramiz:
SELECT nomi, narx, narx * 2 FROM mahsulotlar;Bu yerda narx * 2 — bu hisoblangan ustun. Uning qiymati har bir qator uchun alohida hisoblanadi:
Telefon|5000000|10000000
Noutbuk|12000000|24000000
Quloqchin|300000|600000
Kitob|50000|100000
Daftar|8000|16000
Ruchka|3000|6000
Stol|800000|1600000
Stul|250000|500000E'tibor bering: narx * 2 jadvalga hech narsa yozmaydi — u faqat natijada yangi ustun sifatida ko'rsatiladi. Jadvaldagi asl narx qiymatlari o'zgarmaydi.
Eslatma: Amalda ikkita ustunni ham birga ishlatish mumkin. Masalan,
narx * omborhar bir mahsulot uchun narxni ombordagi songa ko'paytiradi.
Yuqoridagi natijada hisoblangan ustunning nomi yo'q edi (yoki xunuk narx * 2 ko'rinishida edi). Ustunga chiroyli nom berish uchun AS kalit so'zidan foydalanamiz. Bunday nom taxallus (alias) deb ataladi:
SELECT nomi, narx * 2 AS ikki_barobar FROM mahsulotlar;Bu yerda AS ikki_barobar hisoblangan ustunga ikki_barobar degan nom beradi. Taxallus so'rovni o'qishni osonlashtiradi va natija ko'rinishini tartibga soladi.
Muhim: Bizning kod oynamizda natija sarlavhalarsiz (ustun nomlarisiz) chiqadi. Shu sababli
ASnatijaning ko'rinishini o'zgartirmaydi — lekin uni yozish yaxshi odat, chunki so'rovni o'qiyotgan odam ustun nimani anglatishini tushunadi.
AS ni oddiy mavjud ustunlarga ham berish mumkin, lekin u, ayniqsa, hisoblangan ustunlar uchun foydali.
Endi narx va ombordagi sonni ko'paytirib, har bir mahsulotning ombordagi umumiy qiymatini hisoblaymiz va unga qiymat deb nom beramiz:
SELECT nomi, narx * ombor AS qiymat FROM mahsulotlar;Natija:
Telefon|50000000
Noutbuk|60000000
Quloqchin|15000000
Kitob|5000000
Daftar|1600000
Ruchka|1500000
Stol|12000000
Stul|10000000Bu yerda har bir qator uchun SQL narx * ombor ni hisoblaydi: Telefon uchun 5000000 * 10 = 50000000, Noutbuk uchun 12000000 * 5 = 60000000 va hokazo.
Eslatma: Hisoblangan ustunlarni
ORDER BYbilan ham tartiblash mumkin. Masalan, eng qimmat ombordan boshlash uchun:... ORDER BY narx * ombor DESC.
Pastdagi kod oynasida mahsulotlar jadvali allaqachon yaratilgan va to'ldirilgan. Sizning vazifangiz — har bir mahsulotning ombordagi umumiy qiymatini (narx * ombor) hisoblab, uning nomi bilan birga id tartibida chiqaruvchi SELECT so'rovini yozish. Hisoblangan ustunga AS bilan qiymat degan nom bering.