不包括尚未下定单的客户的结果吗?

时间:2018-10-10 14:25:47

标签: sql oracle

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

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

关于结果,我得到了总数 预定每个订购的客户。但是它也指出我需要 仅包括最近的订单。

2 个答案:

答案 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),即可仅获得日期大于指定日期的订单。