آشنایی با SQL - بخش دهم - آشنایی با Group By

مثال ۱ : فرض کنید میانگین حقوق کارمندان را به تفکیک سال تولد نیاز داریم. یعنی گزارشی می خواهیم که مثلا مشخص کند میانگین حقوق کلیه کارمندان متولد ۱۳۶۰ ، ۱۲۰۰ ریال، میانگین حقوق کلیه کارمندان متولد ۱۳۶۱، ۱۱۵۰ ریال و …. است.
SELECT BithYear, AVG (Salary)
FROM Personnel
;GROUP BY BirthYear
مثال ۲ : اگر همان گزارش قبل را فقط برای متولدین قبل از ۱۳۶۰ بخواهیم:
SELECT BithYear, AVG (Salary)
FROM Personnel
WHERE BirthYear < 1360
;GROUP BY BirthYear
مثال ۳ : اما اگر بخواهیم در خروجی گزارش همان مثال ۱ فقط ردیف هائی ظاهر شود که میانگین حقوقی محاسبه شده در انها بالاتر از ۲۰۰۰ ریال باشد نگارش زیر نادرست خواهد بود. زیرا توابع گروهی درWHERE قابل استفاده نیستند.
SELECT BithYear, AVG (Salary)
FROM PersonnelWHERE AVG (Salary) > 2000
;GROUP BY BirthYear
شیوه صحیح استفاده از Having می باشد:
SELECT BithYear, AVG (Salary)
FROM Personnel
GROUP BY BirthYear
;HAVING AVG (Salary) > 2000
مقالات مرتبط
- آشنایی با SQL – بخش یازدهم – آشنایی با پیوند جدول ها
- آشنایی با SQL – بخش نهم – آشنایی با Aggregate Functions
- آشنایی با SQL – بخش هشتم – آشنایی با دستور SELECT
- آشنایی با SQL – بخش هفتم – آشنایی با AND, OR و NOT
- آشنایی با SQL – بخش ششم – آشنایی با دستور DELETE
- آشنایی با SQL – بخش پنجم – آشنایی با دستور UPDATE
- آشنایی با SQL – بخش چهارم – آشنایی با دستور INSERT
- آشنایی با SQL – بخش سوم – آشنایی با دستور CREATE
- آشنایی با SQL – بخش اول – SQL چیست؟
- آشنایی با SQL – بخش دوم – انواع داده