دستور HAVING در SQL Server

این دستور شبیه به WHERE عمل می‌کند با این تفاوت که دستور HAVING می‌تواند همراه با aggregate functions استفاده شود.

دستور HAVING در SQL Server

عبارت HAVING در SQL Server

در SQL Server، دستور HAVING شامل یک یا چند شرط است که باید برای گروه هایی از رکوردها درست (TRUE) باشد. این مانند عبارت WHERE از GROUP BY است. تنها تفاوت این است که عبارت WHERE را نمی توان با توابع aggregate استفاده کرد، در حالی که عبارت HAVING می تواند از توابع aggregate استفاده کند.

به عبارت دیگر، دستور شرطی HAVING بسیار شبیه به دستور WHERE عمل می کند، فقط مزیت دستور HAVING در امکان استفاده از توابع ریاضی در ساختار این دستور است.

عبارت HAVING همیشه بعد از GROUP BY و قبل از ORDER BY می آید.

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

عبارت HAVING در SQL Server

ویژگی های عبارت HAVING در SQL Server :

1 - HAVING برای فیلتر کردن رکوردهای گروه بندی استفاده می شود.

2 - HAVING باید بعد از GROUP BY و قبل از ORDER BY باشد.

3 - HAVING می تواند شامل یک یا چند شرط باشد.

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

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

عبارت HAVING در SQL Server

در بخش GROUP BY از کویری زیر برای بازیابی شماره کارمندان هر بخش مانند شکل زیر استفاده کردیم.

عبارت HAVING در SQL Server

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

عبارت HAVING در SQL Server

حال برای فیلتر کردن نتیجه کویری GROUP BY بالا، مانند شکل زیر از عبارت HAVING با تابع aggregate استفاده کنید.

عبارت HAVING در SQL Server

توجه داشته باشید که ما از یک تابع aggregate به نام COUNT() در عبارت HAVING استفاده کردیم زیرا EmpId در عبارت GROUP BY گنجانده نشده است. کویری بالا نتیجه زیر را نمایش می دهد.

عبارت HAVING در SQL Server

کویری زیر یک خطا ایجاد می کند زیرا ستون حقوق و دستمزد (Salary column) در GROUP BY گنجانده نشده است و از یک تابع aggregate استفاده نمی کند.

عبارت HAVING در SQL Server

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

عبارت HAVING در SQL Server
دستور HAVING در SQL Server آموزش SQL Server