При агрегировании вы обычно включаете ключи group by
.
Ваш вопрос касается фильтрации.Если вы хотите сосчитать всех заказов, но только для клиентов, которые сделали недавний заказ, тогда фильтрация будет после агрегации.Используйте предложение having
:
select customer#, count(*)
from books
group by customer#
having max(orderdate) >= date '2009-04-01'; -- or whatever the cutoff is for "recent"
Если вы хотите только подсчитать недавних ордеров, то вам нужна фильтрация до агрегации .Таким образом, вы используете предложение where
:
select customer#, count(*)
from books
where orderdate >= date '2009-04-01'
group by customer#;
Количество будет отличаться в каждом случае.Также обратите внимание на использование ключевого слова date
, чтобы вы могли выразить константу даты как ГГГГ-ММ-ДД.