Having (SQL)

HAVING — необов'язковий параметр оператора SELECT для зазначення умови на результат агрегатних функцій (MAX, SUM, AVG, …).

HAVING <умови> подібний до WHERE <умови> за винятком того, що рядки відбираються не за значенням стовпців, а будуються зі значень стовпців вказаних в GROUP BY і значень агрегатних функцій, обчислених для кожної групи, утвореної GROUP BY. Якщо GROUP BY не використовується, HAVING поводить себе як WHERE.

Приклади

[ред. | ред. код]

Для отримання списку ідентифікаційних номерів відділень, в яких загальна зарплатня 1 січня 2000 року перевищує $1000, разом із сумою зарплат на цей день:

 SELECT DeptID, SUM(SaleAmount)  FROM Sales  WHERE SaleDate = '01-Jan-2000'  GROUP BY DeptID  HAVING SUM(SaleAmount) > 1000 

Наступний запит поверне список відділів, в яких працює більше ніж один співробітник:

 SELECT DepartmentName, COUNT(*)   FROM employee,department   WHERE employee.DepartmentID = department.DepartmentID   GROUP BY DepartmentName  HAVING COUNT(*)>1; 

HAVING — це зручно, але не обов'язково. Код тотожний наведеному вище, але без використання HAVING, може виглядати так:

SELECT * FROM (    SELECT DepartmentName AS deptNam, COUNT(*) AS empCnt    FROM Employee AS emp, Department AS dept    WHERE emp.DepartmentID = dept.DepartmentID    GROUP BY deptNam ) AS grp WHERE grp.empCnt > 1; 

Посилання

[ред. | ред. код]