Не включать результаты клиентов, которые не сделали недавний заказ? - PullRequest
0 голосов
/ 10 октября 2018

Определите, сколько заказов было размещено каждым клиентом.Не включайте в результаты ни одного клиента, который недавно не разместил заказ.

order#  customer# orderdate
============================
1000    1005    31-MAR-09 
1001    1010    31-MAR-09
1002    1011    31-MAR-09
1003    1001    01-APR-09
1004    1020    01-APR-09
1005    1018    01-APR-09
1006    1003    01-APR-09
1007    1007    02-APR-09
1008    1004    02-APR-09
1009    1005    03-APR-09
1010    1019    03-APR-09
1011    1010    03-APR-09
1012    1017    03-APR-09
1013    1014    03-APR-09
1014    1007    04-APR-09
1015    1020    04-APR-09
1016    1003    04-APR-09
1017    1015    04-APR-09
1018    1001    05-APR-09
1019    1018    05-APR-09
1020    1008    05-APR-09

Ниже приведен мой SQL-запрос в Oracle

select count(orderdate)    
from books     
group by customer#

Что касается результатов, я получаю общее количество книг, заказанных каждым клиентом.Однако в нем также говорится, что мне нужно включить только самые последние заказы.

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

При агрегировании вы обычно включаете ключи 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, чтобы вы могли выразить константу даты как ГГГГ-ММ-ДД.

0 голосов
/ 10 октября 2018

Я думаю, вам просто нужно добавить where (date> 02-APR-09), чтобы вы получали только заказы с датой, превышающей указанную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...