Yana bir so‘rov: Qancha xizmatchi rejani ortig‘i bilan bajardi?
SELECT COUNT(NAME) FROM SALESREPS WHERE SALES > QUOTA
COUNT(*) funksiyasi qiymatlar sonini emas, satrlar sonini hisoblaydi. Quyidagicha yozish mumkin:
SELECT COUNT(*) FROM ORDERS WHERE AMOUNT > 250
NULL qiymat va agregat funksiyalar.Ustun qiymati NULL bo‘lsa AVG(), MIN(), MAX(), SUM(), COUNT() funksiyalari qanday qiymat qaytaradi. ANSI/ISO qoidalariga ko‘ra "agregat funksiyalar NULL qiymatni e’tiborga olmaydi".
Quyidagi so‘rovni ko‘ramiz:
SELECT COUNT(*), COUNT(SALES), COUNT(QUOTA) FROM SALESREPS
Jadval bitta lekin so‘rovdagi qiymatlar har xil. Chunki QUOTA maydoni- NULL qiymatni o‘z ichiga oladi. COUNT funksiyasi COUNT(maydon) ko‘rinishda bo‘lsa NULL qiymatni e’tiborga olmaydi, COUNT(*) bo‘lsa satrlar umumiy sonini hisoblaydi. MIN(), MAX() funksiyalari ham NULL qiymatni e’tiborga olmaydi, lekin AVG(), SUM() - NULL qiymat mavjud bo‘lsa chalkashtiradi.
Masalan, quyidagi so‘rov:
SELECT SUM(SALES), SUM(QUOTA),
(SUM(SALES) - SUM(QUOTA)), (SUM(SALES – UOTA)) FROM SALESREPS
(SUM(SALES)-SUM(QUOTA)) va (SUM(SALES-QUOTA))
ifodalari agar QUOTA, maydoni NULL qiymatga ega bo‘lsa har xil qiymat qaytaradi. Ya‘ni ifoda SUM(ustun qiymati - NULL). Yana NULL qaytaradi. Shunday qilib:
Agar ustundagi qiymatlardan biri NULL ga teng bo‘lsa, funksiya natijasini hisoblashda ular tashlab yuboriladi.
Agar ustundagi hamma qiymatlar NULL ga teng bo‘lsa, AVG(), SUM(), MIN(), MAX() funksiyalari NULL qaytaradi. Funksiya COUNT() nolь qaytaradi.
Agar ustunda qiymatlar bo‘lmasa (ya‘ni ustun bo‘sh), AVG(), SUM(), MIN(), MAX() funksiyalari NULL qaytaradi. Funksiya COUNT()nolь qaytaradi.
Dostları ilə paylaş: |