SELECT REP, CUST, SUM(AMOUNT)
FROM ORDERS
GROUP BY REP, CUST
Lekin ikki ustun bo‘yicha guruxlashda natijalar ikki darajasiga ega guruxlar va ostki guruxlar yaratish mumkin emas. Lekin tartiblashni qo‘llash mumkin. SHu bilan birga GROUP BY ishlatilganda so‘rov natijalari avtomatik tartiblanadi. Quyidagi so‘rovni ko‘ramiz:
Xar bir xizmatchi uchun xar bir klient bo‘yicha buyurtmalar umumiy sonini xisoblash; so‘rov natijalarini klientlar va xizmatchilar bo‘yicha tartiblash.
SELECT REP, CUST, SUM(AMOUNT)
FROM ORDERS
GROUP BY REP, CUST
ORDER BY REP, CUST
SHunday qilib GROUP BY ifodasi SELECT ni guruxlarni qayta ishlashga majbur qiladi.
MS SQL serverida COMPUTE ifodasi mavjud bo‘lib relyasion so‘rovlar asoslariga zid keladi. Lekin uning yordamida saqlanuvchi protseduralardan foydalanmasdan shunga o‘xshash natijalarni olish mumkin. Ruruxlanishli so‘rovlar uchun chegaralar mavjud. Satrlarni xisoblanuvchi ifoda asosida guruxlash mumkin emas. Qaytarilao‘tgan qiymatlar elementlariga xam chegaralar mavjud. Qaytariluvchi ustun bo‘lishi mumkin:
1. Konstantalar.
2. Guruxga kirgan xamma satrlar uchun bitta qiymat qaytaruvchi agregat funksiya.
3. Gurux xamma satrlarida bir xil qiymatga ega guruxlash ustuni.
4. Ko‘rsatilgan elementlarni o‘z ichiga oluvchi ifoda.
Odatda guruxlanishli so‘rovlar qaytaruvchi ustunlarga guruxlash ustuni va agregat funksiya kiradi. Agar agregat ko‘rsatilmasa GROUP BY dan foydalanmasdan DISTINCT ifodasidan foydalanish etarli. Agar so‘rovga guruxlash ustuni qo‘shilmasa, u yoki bu satr qaysi guruxga tegishliligini aniqlash mumkin emas. SHu kabi SQL92 guruxlanishli so‘rovlarni taxlil qilishda birlamchi va ikkilamchi kalitlar xaqidagi ma’lumot ishlatilmaydi.
Xar bir xizmatchi uchun buyurtmalar umumiy sonini xisoblash.
SELECT EMPL_NUM, NAME, SUM(AMOUNT)
FROM ORDERS, SALESREPS
WHERE REP = EMPL_NUM
GROUP BY EMPL_NUM, NAME
YAna soddaroq shakl:
Xar bir xizmatchi uchun buyurtmalar umumiy sonini xisoblash.
Do'stlaringiz bilan baham: |