Предложение WHERE может использоваться, даже если используется HAVING. Это разные вещи. Способ думать об этом следующим образом:
- ИНЕКЕ действует как фильтр на уровне записей
- Все, что получает через затем в группы, указанные вашим GROUP BY
- Затем предложения HAVING фильтрует группы, на основе совокупного (SUM, COUNT, MIN и т.д.) состояние
Так что, если у меня есть таблица: (store_id, STATE_CODE, SALES)
Select STATE, SUM(SALES)
from MyTable
Where SALES > 100
Group By STATE
Having Sum(Sales) > 1000
Сначала будет фильтроваться, чтобы читать только записи магазина с объемом продаж более 100. Для каждой группы (по штату) она будет суммировать продажи только тех магазинов, где проданы 100 или более. Затем будет сброшено любое государство, если сумма государственного уровня не превысит 1000. [Примечание: суммирование в государстве исключает любой объем продаж 100 или менее.]
Либо действительны, но предложение WHERE для меня фактически более стандартное использование. –
@JasonWhisman - Значит, вы говорите, что мне даже не нужно вообще использовать предложение HAVING и можете выполнять все заявления с WHERE? –
Правильно, все, кроме агрегатных статей. Таким образом, вам все равно придется делать «HAVING SUM (child_id)> 0', но в остальном все в порядке. –