SELECT a.snum, sname, onum, ‘Lowest on’, odate FROM Salespeople a,
Orders b WHERE a.snum b.snum AND b.amt = (SEi FCT MIN (amt) FROM Orders с
WHERE c.odate ; b.odate);
Shu paytgacha UNION kalit so‘zi yordamida birlashtirilgan so‘rov natijalari qanday tartibda matnga chiqarilishi to‘g’risida gapirmadik. Birlashtirilgan natijalarni ORDER BY kalit so‘zi yordamida tartiblashtirish mumkin. Yoqoridagi misolni tartub raqamlariga nisbatan tartiblashni ko‘rib o‘tamiz.
SELECT a.snum, sname, onum, ‘Highest on’, odate FROM Salespeople a.
Orders by WHERE a.snum = b.snum AND b.amt = (SELECT MAX (amt)
FROM Orders с WHERE c.odate = b.odate) UNION
SELECT a.snum, sname, onum. ‘Lowest on’, odate FROM Salespeople a.
Orders by
WHERE a.snum = b.snu AND b.amt = (SELECT MIN (amt) FROM Orders с WHERE c.odate = b.odate)
ORDER BY 3;
Arifmetik operatorlarning ustuvorligi matematikada bo‘lgani kabi bir xil. Agar kerak bo‘lsa, qavslar yordamida operatorlarni qo‘llash tartibi o‘zgartirilishi mumkin - (a + b) * (x / (y-z)). Va yana bir bor takrorlayman, NULL bilan har qanday operatsiya NULL beradi, masalan: 10 + NULL, NULL * 15/3, 100 / NULL - bularning barchasi NULL ga olib keladi. I.e. shunchaki noma'lum qiymatni aytish aniq natijani berolmaydi. So‘rovni tuzishda buni hisobga oling va agar kerak bo‘lsa, NULL qiymatlarni ISNULL, COALEемент funktsiyalari bilan ishlang:
SELECT
ID,Name,
Salary/100*BonusPercent AS Result1, NULL Salary/100*ISNULL(BonusPercent,0) AS Result2, ISNULL Salary/100*COALESCE(BonusPercent,0) AS
FROM Employees
COALESCE funktsiyasi haqida bir oz gaplashamin:
COALESCE (expr1, expr2, ..., exprn) - qiymatlar ro‘yxatidan birinchi NULL bo‘lmagan qiymatni qaytaradi.
Misol:
SELECT COALESCE (f1, f1 * f2, f2 * f3) val - bu holda uchinchi qiymat qaytariladi
FROM (SELECT null f1, 2 f2, 3 f3) q
Ko‘pincha ma'lumotlar bilan ishlash ma'lum bir ketma-ketlikda bajarilishi kerak bo‘lgan ko‘rsatmalar to‘plamini anglatadi. Masalan, mahsulot sotib olishni qo‘shganda, ma'lumotlar jadvaliga ma'lumotlarni kiritish kerak. Biroq, bundan oldin, stokda sotib olingan mahsulot bor yoki yo‘qligini tekshirish kerak. Bir qator qo‘shimcha shartlarni tekshirishingiz kerak bo‘lishi mumkin. Ya'ni, aslida, tovarlarni sotib olish jarayoni muayyan ketma-ketlikda bajarilishi kerak bo‘lgan bir nechta harakatlarni o‘z ichiga oladi. Va bu holda, ushbu harakatlarning barchasini bitta obyektga - saqlangan protsedura ichiga kiritish yanada maqbul bo‘ladi.Ya'ni, mohiyatiga ko‘ra, saqlanadigan protseduralar bir butun sifatida bajariladigan ko‘rsatmalar to‘plamini anglatadi. Shunday qilib, saqlanadigan protseduralar murakkab operatsiyalarni soddalashtiradi va ularni bitta obyektga o‘tkazadi. Tovarlarni sotib olish jarayoni o‘zgaradi, shuning uchun protsedura kodini o‘zgartirish kifoya qiladi. Ya'ni, protsedura kodlarni boshqarishni ham soddalashtiradi.Shuningdek, saqlanadigan protseduralar jadvallarga ma'lumotlarga kirishni cheklash va shu bilan bog'liq ravishda ataylab qilingan yoki ongsiz istalmagan harakatlar ehtimolini kamaytirishga imkon beradi.Va yana bir muhim jihat - bu ishlash. Saqlanadigan protseduralar odatdagi SQL ko‘rsatmalariga qaraganda tezroq bajariladi. Buning sababi, protsedura kodi birinchi marta ishga tushirilganda kompilyatsiya qilinadi va keyin kompilyatsiya qilingan shaklda saqlanadi.Saqlanadigan protsedurani yaratish uchun CREATE PROCEDURE yoki CREATE PROC buyrug'idan foydalaning.
Shunday qilib, saqlanadigan protsedura uchta asosiy xususiyatga ega: kodni soddalashtirish, xavfsizlik va ishlash.
Masalan, ma'lumotlar bazasida mahsulotlar to‘g'risidagi ma'lumotlarni saqlaydigan jadval mavjud deylik.