Oracle - почему предложение HAVING может быть до GROUP BY - PullRequest
2 голосов
/ 19 мая 2019

Почему / Как HAVING предложение может быть до GROUP BY

select count(1) from tableA
having id >1
group by id
order by count(1)

Я знаю, HAVING предложение может быть без предложения GROUP BY,

Но когдаопределяя GROUP BY, почему HAVING не является обязательным, после

Derby обрабатывает выражение SelectExpression в следующем порядке:

  • ОТ предложения
  • WHERE предложение
  • GROUP BY (или неявное GROUP BY)
  • HAVING предложение
  • ORDER BY предложение

Во всех документах появляется после GROUP BY:

GROUP BY WORKDEPT 
HAVING MAX(SALARY) < (SELECT AVG(SALARY)
                      FROM EMPLOYEE
                      WHERE NOT WORKDEPT = EMP_COR.WORKDEPT)

1 Ответ

1 голос
/ 19 мая 2019

, так как предложение has работает с результатом (отфильтруйте результат выбора)GROUP BY, таким образом, систематически HAVING помещается до конца запроса CLAUSE .. непосредственно перед предложением представления (ORDER BY)

...