确定每个客户下了多少订单。不要在结果中包含任何最近未下订单的客户。
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(,这样您只能获得日期大于指定日期的订单。