Korxona geomaʼlumotlar bazalari uchun sana-vaqt sintaksisi Oracle
Sana maydoni = sana "yyyy-aa-dd"
Shuni yodda tutingki, bu erda vaqt nolga teng bo'lmagan yozuvlar qaytarilmaydi.
Oracle -da sanalarni so'rashda muqobil format :
Sana maydoni = TO_DATE('yyyy-aa-dd hs:dd:ss','YYYY-MM-DD HH24:MI:SS')
Ikkinchi parametr "YYYY-AA-DD HH24:MI:SS" so'rovlarda ishlatiladigan formatni tavsiflaydi. Haqiqiy so'rov quyidagicha ko'rinadi:
Sana maydoni = TO_DATE('2003-01-08 14:35:00','YYYY-AA-KK HH24:MI:SS')
Siz qisqaroq versiyadan foydalanishingiz mumkin:
TO_DATE('2003-11-18','YYYY-AA-KK')
Shunga qaramay, vaqt nolga teng bo'lmagan yozuvlar qaytarilmaydi.
47-Mavzu: Natijaviy (agregat) funktsiyalari COUNT, SUM.
Reja:
1. SQL SUM funksiyasi
2. SUM (USTUN NOMI) NI TANGLASH...
3. MIN
SQL SUM funksiyasi
SQL SUM funktsiyasi ma'lumotlar bazasi jadvalidagi ustun qiymatlari yig'indisini qaytaradi. U faqat qiymatlari raqamlar bo'lgan ustunlarga qo'llanilishi mumkin. Olingan summani olish uchun SQL so'rovlari quyidagicha boshlanadi:
SUM (USTUN NOMI) NI TANGLASH...
Bu iboradan keyin FROM (TABLE_NAME) keladi va keyin shartni WHERE bandi yordamida belgilash mumkin. Bundan tashqari, DISTINCT faqat noyob qiymatlar hisobga olinishini bildirish uchun ustun nomiga prefiks qo'shilishi mumkin. Odatiy bo'lib, barcha qiymatlar hisobga olinadi (buning uchun siz DISTINCT emas, balki HAMMAsini belgilashingiz mumkin, lekin ALL so'zi ixtiyoriy).
Agar siz ushbu darsdan MS SQL Serverda ma'lumotlar bazasi so'rovlarini bajarishni istasangiz, lekin bu DBMS sizning kompyuteringizda o'rnatilmagan bo'lsa, uni ushbu havoladagi ko'rsatmalardan foydalanib o'rnatishingiz mumkin .
Birinchidan, biz kompaniyaning ma'lumotlar bazasi bilan ishlaymiz - Company1. Ushbu ma'lumotlar bazasini, uning jadvallarini yaratish va jadvallarni ma'lumotlar bilan to'ldirish uchun skript ushbu havoladagi faylda joylashgan .
Misol 1. Kompaniyaning bo'limlari va xodimlari to'g'risidagi ma'lumotlardan iborat ma'lumotlar bazasi mavjud. Xodimlar jadvalida shuningdek, xodimlarning ish haqi ma'lumotlari ko'rsatilgan ustun mavjud. Jadvaldagi tanlov quyidagi shaklga ega (rasmni kattalashtirish uchun sichqonchaning chap tugmasi bilan bosing):
Barcha ish haqi summasini olish uchun biz quyidagi so'rovdan foydalanamiz (MS SQL Serverda - USE company1 prefiksi bilan;):
Xodimlardan SUM (ish haqi)
TANLASH
Ushbu so'rov 287664.63 qiymatini qaytaradi.
Va endi o'z taqdirini hal qilish uchun mashq . Mashqlarda biz allaqachon vazifalarni murakkablashtira boshlaymiz, ularni amalda duch keladigan narsalarga yaqinlashtiramiz.
Misol 2. Kotib lavozimiga ega bo'lgan barcha xodimlar tomonidan olingan komissiyalar miqdorini ko'rsating.
To'g'ri yechim va javob .
SQL MIN funksiyasi
SQL MIN funktsiyasi, shuningdek, qiymatlari raqamlar bo'lgan ustunlarda ishlaydi va ustundagi barcha qiymatlarning minimalini qaytaradi. Bu funksiya SUM funksiyasiga o'xshash sintaksisga ega.
3-misol. Ma'lumotlar bazasi va jadval 1-misoldagi kabi.
42-sonli bo'lim xodimlarining eng kam ish haqi miqdorini aniqlash talab qilinadi. Buning uchun quyidagi so'rovni yozamiz (MS SQL Serverda - USE company1 prefiksi bilan;):
Xodimlardan MIN (ish haqi)
TANLASH QAYERDA Bo'lim=42
So'rov 10505.90 qiymatini qaytaradi.
Va yana, o'z taqdirini hal qilish uchun mashq . Ushbu va boshqa ba'zi mashqlarda sizga nafaqat Xodimlar jadvali, balki kompaniya bo'linmalari to'g'risidagi ma'lumotlarni o'z ichiga olgan tashkilot jadvali ham kerak bo'ladi:
4-misol. Tashkilotlar jadvali kompaniya bo'linmalari haqidagi ma'lumotlarni o'z ichiga olgan Xodimlar jadvaliga qo'shiladi. Bostonda joylashgan bo'limda bitta xodim ishlagan minimal yillar sonini ko'rsating.
To'g'ri yechim va javob .
2-sahifa (Agregat funktsiyalardan agregat funktsiyalarga ruxsat berilganmi?)
SQL MAX funktsiyasi
SQL MAX funktsiyasi shunga o'xshash ishlaydi va bir xil sintaksisga ega, bu ustunning barcha qiymatlari orasida maksimal qiymatni aniqlashni xohlaganingizda ishlatiladi.
Misol 5. Ma'lumotlar bazasi va jadval oldingi misollardagi kabi.
42-sonli bo'lim xodimlarining ish haqining maksimal miqdorini aniqlash talab etiladi. Buning uchun quyidagi so'rovni yozamiz (MS SQL Serverda - USE company1 prefiksi bilan;):
Xodimlardan MAX (ish haqi)
TANLASH QAYERDA Bo'lim=42
So'rov 18352.80 qiymatini qaytaradi
O'z-o'zidan qaror qabul qilish uchun mashq qilish vaqti keldi .
Misol 6. Yana ikkita jadval bilan ishlaymiz - Xodimlar va Org. Sharqiy bo'limlar (bo'lim) guruhiga kiruvchi bo'limda bitta xodim tomonidan qabul qilingan komissiyalarning maksimal miqdori bo'lim nomini ko'rsating. JOIN (jadvallarni birlashtirish) dan foydalaning .
To'g'ri yechim va javob .
SQL AVG funksiyasi
Oldingi tavsiflangan funksiyalar sintaksisi haqida aytilganlar SQL AVG funksiyasiga ham to'g'ri keladi. Ushbu funktsiya ustundagi barcha qiymatlarning o'rtacha qiymatini qaytaradi.
Misol 7. Ma'lumotlar bazasi va jadval oldingi misollardagi kabi.
42-sonli bo'lim xodimlarining o'rtacha ish stajini aniqlash talab qilinsin. Buning uchun quyidagi so'rovni yozamiz (MS SQL Serverda - USE company1 prefiksi bilan;):
Xodimlardan AVG (yillar)
TANLASH QAYERDA Bo'lim=42
Natijada 6,33 bo'ladi
Quyidagi mashq uni o'zingiz hal qilish uchun yig'ish funktsiyasiga qo'shimcha ravishda BETWEEN predikatidan foydalanishni talab qiladi .
Misol 8. Biz bitta stol bilan ishlaymiz - Xodimlar. 4 yildan 6 yilgacha bo'lgan tajribaga ega xodimlarning o'rtacha ish haqini ko'rsating.
To'g'ri yechim va javob .
2-sahifa (Agregat funktsiyalardan agregat funktsiyalarga ruxsat berilganmi?)
SQL COUNT funktsiyasi
SQL COUNT funktsiyasi ma'lumotlar bazasi jadvalidagi yozuvlar sonini qaytaradi. Agar siz so'rovda SELECT COUNT(COLUMNAME) ... ni belgilasangiz, natijada ustun qiymati NULL (aniqlanmagan) bo'lgan yozuvlar hisobga olinmagan yozuvlar soni bo'ladi. Argument sifatida yulduzchadan foydalansangiz va SELECT COUNT(*) ... so‘rovini boshlasangiz, natija jadvaldagi barcha yozuvlar (qatorlar) soni bo‘ladi.
Misol 9. Ma'lumotlar bazasi va jadval oldingi misollardagi kabi.
Siz komissiya oladigan barcha xodimlar sonini bilmoqchisiz. Comm ustuni qiymatlari NULL bo'lmagan xodimlar soni quyidagi so'rovni qaytaradi (MS SQL Serverda - USE kompaniyasi1 bilan; oldindan tayyorlanayotgan konstruktsiya):
Xodimlardan COUNT (Comm)
TANLANING
Natijada 11 qiymati bo'ladi.
10-misol. Ma'lumotlar bazasi va jadval oldingi misollardagi kabi.
Agar siz jadvaldagi yozuvlarning umumiy sonini bilishingiz kerak bo'lsa, yulduzcha bilan so'rovni COUNT funktsiyasiga argument sifatida foydalaning (MS SQL Serverda - USE company1 prefiksi bilan;):
Xodimlardan COUNT (*)
TANLANG
Natijada 17 qiymati bo'ladi.
Keyingi mashqda siz uni o'zingiz hal qilish uchun pastki so'rovdan foydalanasiz.
Misol 11. Biz bitta stol bilan ishlaymiz - Xodimlar. Plains bo'limidagi xodimlar sonini ko'rsating.
To'g'ri yechim va javob .
2-sahifa (Agregat funktsiyalardan agregat funktsiyalarga ruxsat berilganmi?)
SQL GROUP BY bilan funksiyalarni jamlash
Endi SQL GROUP BY bandi bilan birgalikda agregat funktsiyalardan foydalanishni ko'rib chiqamiz. SQL GROUP BY bandi olingan qiymatlarni ma'lumotlar bazasi jadvalidagi ustunlar bo'yicha guruhlash uchun ishlatiladi. Saytda alohida ushbu operatorga bag'ishlangan dars mavjud .
Biz “1-e’lon portali” ma’lumotlar bazasi bilan ishlaymiz. Ushbu ma'lumotlar bazasini yaratish skripti, uning jadvali va ma'lumotlar jadvalini to'ldirish ushbu havoladagi faylda .
Misol 12. Demak, reklama portali ma'lumotlar bazasi mavjud. Unda bir hafta davomida taqdim etilgan e'lonlar haqidagi ma'lumotlarni o'z ichiga olgan E'lonlar jadvali mavjud. Turkum ustunida katta reklama toifalari (masalan, Ko‘chmas mulk) haqidagi ma’lumotlar, “Qismlar” ustunida esa toifaga kiritilgan kichikroq qismlar haqidagi ma’lumotlar mavjud (masalan, Kvartiralar va Villalar qismlari Ko‘chmas mulk toifasiga kiradi). Birliklar ustunida yuborilgan e'lonlar soni to'g'risidagi ma'lumotlar, Pul ustunida esa e'lonlarni yuborish uchun olingan pul miqdori mavjud.
Turkum
|
qismi
|
Birliklar
|
Pul
|
Transport
|
avtotransport vositalari
|
110
|
17600
|
Ko `chmas mulk
|
Kvartiralar
|
89
|
18690
|
Ko `chmas mulk
|
Dachalar
|
57
|
11970 yil
|
Transport
|
Mototsikllar
|
131
|
20960
|
qurilish materiallari
|
Kengashlar
|
68
|
7140
|
elektrotexnika
|
televizorlar
|
127
|
8255
|
elektrotexnika
|
Muzlatgichlar
|
137
|
8905
|
qurilish materiallari
|
Regips
|
112
|
11760
|
Dam olish
|
Kitoblar
|
96
|
6240
|
Ko `chmas mulk
|
Uylar
|
47
|
9870
|
Dam olish
|
Musiqa
|
117
|
7605
|
Dam olish
|
O'yinlar
|
41
|
2665
|
SQL GROUP BY bandidan foydalanib, har bir toifadagi reklamalarni yuborish orqali hosil qilingan pul miqdorini toping. Biz quyidagi so'rovni yozamiz (MS SQL Serverda - USE adportal1 prefiksi bilan;):
Do'stlaringiz bilan baham: |