不包括最近未下订单的客户的结果?



确定每个客户下了多少订单。不要在结果中包含任何最近未下订单的客户。

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查询

select count(orderdate)    
from books     
group by customer#

至于结果,我得到的总数 每个客户订购的书籍。但是它也指出我需要 以仅包含最近的订单。

聚合时,通常会包含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关键字的使用,以便您可以将日期常量表示为 YYYY-MM-DD。

我认为您只需要添加一个where(date>02-APR-09(,这样您只能获得日期大于指定日期的订单。

相关内容

最新更新