确定每个客户下了多少个订单。结果中不要包含最近未下订单的任何客户。
public int sumMultiples(int num)
{
int sum = 0;
for (int val = num; val <= 100; val += num)
sum = sum + val;
return sum;
}
下面是我在Oracle中的SQL查询
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
关于结果,我得到了总数 预定每个订购的客户。但是它也指出我需要 仅包括最近的订单。
答案 0 :(得分:1)
进行汇总时,通常会包含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。
答案 1 :(得分:0)
我认为您只需要添加一个where(date> 02-APR-09),即可仅获得日期大于指定日期的订单。