توضیحات
دستور having به همراه group by میآید برای اعمال محدودیت بر روی رکوردها که تنها رکوردهایی را برمیگرداند که شرط را داشته باشند.
دستور
دستور having در pl/sql به این شکل است:
SELECT expression1, expression2, ... expression_n, aggregate_function (aggregate_expression) FROM tables [WHERE conditions] GROUP BY expression1, expression2, ... expression_n HAVING having_condition;
پارامترهای دستور
expression1, expression2, expression_n: ستونهایی هستند که در توابع تجمعی نمیآیند و بر اساس این ستونها رکوردها دستهبندی میشوند و توابع بر روی آنها اعمال میشود.
aggregate_function: توابعی مانند min، max، avg، count میتوانند در این قسمت قرار گیرند.
Tables: جداولی است که شما انتظار دارید دادهها از آن بازیابی شود.
WHERE conditions: شرط اختیاری است. شرطی است که باید رکوردها موقع بازیابی آن را رعایت کنند.
having_condition: این شرط بر روی گروهها اعمال میشود و تنها گروههایی در نتیجه میآیند که شرط را برقرار کنند.
مثال
• در مثال زیر رکوردها بر اساس ستون department گروهبندی میشوند و تنها گروههایی نمایش داده میشود که شرط SUM(sales) > 25000 را برقرار کنند.
SELECT department, SUM(sales) AS "Total sales" FROM order_details GROUP BY department HAVING SUM(sales) > 25000;
• در مثال زیر رکوردها بر اساس ستون department گروهبندی میشوند و تنها گروههایی نمایش داده میشود که شرط تعداد کارکنان بیشتر از 10 را رعایت کنند.
SELECT department, COUNT(*) AS "Number of employees" FROM employees WHERE salary < 49500 GROUP BY department HAVING COUNT(*) > 10;