Guruhga kirgan hamma satrlar uchun bitta qiymat qaytaruvchi agregat funksiya.
Guruh hamma satrlarida bir xil qiymatga ega guruhlash ustuni.
Ko‘rsatilgan elementlarni o‘z ichiga oluvchi ifoda.
Odatda guruhlanishli so‘rovlar qaytaruvchi ustunlarga guruhlash ustuni va agregat funksiya kiradi. Agar agregat ko‘rsatilmasa GROUP BY dan foydalanmasdan DISTINCT ifodasidan foydalanish yetarli. Agar so‘rovga guruhlash ustuni qo‘shilmasa, u yoki bu satr qaysi guruhga tegishliligini aniqlash mumkin emas. Shu kabi SQL92 guruhlanishli so‘rovlarni tahlil qilishda birlamchi va ikkilamchi kalitlar haqidagi ma‘lumot ishlatilmaydi. Har bir xizmatchi uchun buyurtmalar umumiy sonini hisoblash::
SELECT EMPL_NUM, NAME, SUM(AMOUNT) FROM ORDERS, SALESREPS
WHERE REP = EMPL_NUM GROUP BY EMPL_NUM, NAME Yana soddaroq shakl: har bir xizmatchi uchun buyurtmalar umumiy sonini hisoblash:
SELECT NAME, SUM(AMOUNT) FROM ORDERS, SALESREPS WHERE REP = EMPL_NUM GROUP BY NAME
Agar guruhlash maydonlaridan birida NULL qiymat mavjud bo‘lsa qaysi guruhga tegishli bo‘ladi? WHERE ifodasida NULL va NULL tenglikka solishtirish natijasi yana NULL beradi. Shuning uchun ANSI/ISO standartida GROUP BY ifodasida NULL qiymatlar teng deb qabul qilingan.
Guruhlash va HAVING yordamida ajratish. Shart bo‘yicha satrlarni ajratish uchun WHERE ifodasidan foydalangan edik. Shart bo‘yicha guruhlarni ajratish uchun HAVING operatori mavjuddir. Uning sintaksisi WHERE operatori bilan bir xil va ulardan birgalikda foydalanigsh mumkin.
Quyidagi so‘rovni ko‘ramiz: buyurtmalar umumiy narxi $300 dan ortiq xizmatchilar uchun buyurtma o‘rtacha narxi qanchaga teng?