دستور GROUP BY در SQL SERVER

از دستور GROUP BY در SQL در زمان استفاده از توابع MIN, SUM, AVG و غیره برای گروه بندی نتایج بر اساس یک یا چند فیلد، استفاده می شود.

دستور GROUP BY در SQL SERVER

عبارت GROUP BY در SQL Server

در SQL Server از عبارت GROUP BY برای دریافت خلاصه داده ها بر اساس یک یا چند گروه استفاده می شود. گروه ها را می توان بر روی یک یا چند ستون تشکیل داد. به عنوان مثال، کویری GROUP BY برای شمارش تعداد کارکنان در هر بخش، یا برای دریافت کل حقوق و دستمزد بخش مورد استفاده قرار می گیرد.

شما باید از توابع جمعی مانند ()COUNT() ، MAX() ، MIN() ، SUM() ، AVG و غیره در کویری SELECT استفاده کنید. نتیجه عبارت GROUP BY یک سطر را برای هر مقدار از ستون GROUP BY برمی گرداند.

سینتکس آن به صورت زیر است :

عبارت GROUP BY در SQL Server

عبارت SELECT می تواند شامل ستون هایی باشد که با عبارت GROUP BY استفاده می شوند. بنابراین، برای گنجاندن سایر ستون ها در عبارت SELECT، از توابع جمعی (aggregate functions) مانند ()COUNT()، MAX()، MIN()، SUM()، AVG با آن ستون ها استفاده کنید.

ویژگی های GROUP BY :

1 - GROUP BY برای تشکیل گروه هایی از رکوردها استفاده می شود.

2 - GROUP BY در صورت وجود باید بعد از WHERE و قبل از HAVING آمده باشد.

3 - GROUP BY می تواند شامل یک یا چند ستون برای تشکیل یک یا چند گروه بر اساس آن ستون ها باشد.

4 - فقط ستون های GROUP BY را می توان در SELECT گنجاند. برای استفاده از ستون های دیگر در SELECT، از توابع جمع با آنها استفاده کنید.

جهت تفهیم بیشتر، از جداول Employee و Department زیر در همه مثال ها استفاده خواهیم کرد.

عبارت GROUP BY در SQL Server

کویری GROUP BY زیر را در نظر بگیرید.

عبارت GROUP BY در SQL Server

کوئری فوق شامل عبارت GROUP BY DeptId است، بنابراین می توانید فقط DeptId را در عبارت SELECT وارد کنید. برای گنجاندن ستون های دیگر در عبارت SELECT باید از توابع aggregate استفاده کنید، بنابراین COUNT(EmpId) گنجانده شده است زیرا می خواهیم تعداد کارمندان در همان DeptId را بشماریم. "No of Employees" نام مستعار ستون COUNT(EmpId) است. کویری نتیجه زیر را نمایش می دهد.

عبارت GROUP BY در SQL Server

کوئری زیر به جای DeptId در نتیجه، نام department را دریافت می کند.

عبارت GROUP BY در SQL Server

کویری فوق نتیجه زیر را در SQL Server برمی گرداند.

عبارت GROUP BY در SQL Server

به روش مشابه، کویری زیر کل حقوق و دستمزد department را دریافت می کند.

عبارت GROUP BY در SQL Server

کویری فوق نتیجه زیر را در SQL Server برمی گرداند.

آموزش SQL Server

کویری زیر یک خطا ایجاد می کند، زیرا dept.DeptName در عبارت GROUP BY گنجانده نشده است، یا از تابع aggregate استفاده نشده است.

عبارت GROUP BY در SQL Server

کویری فوق نتیجه زیر را در SQL Server برمی گرداند.

عبارت GROUP BY در SQL Server
دستور GROUP BY در SQL SERVER آموزش SQL SERVER