返回特定日期范围内的平均记录数的查询

时间:2011-11-11 12:16:45

标签: oracle oracle11g

我有一个包含以下列的表

OrderID     Number
ProductID   Number 
Order_date  Datetime
Qty         number

如何获得一系列日期的每日平均订单数量。我想知道包括在内的10月31日到11月4日期间每天的平均订单。

提前致谢。

1 个答案:

答案 0 :(得分:6)

您的问题有点矛盾,fisrt要求每天平均订单数量,然后询问平均订单(这表示您想要平均数量,而不是平均订单数量)

这应该为您指定的范围提供每天的平均数量(尽管插入您的表名):

SELECT TRUNC(order_date) AS order_day,
       AVG(qty) AS daily_orders
  FROM <table>
 WHERE order_date 
          BETWEEN TO_DATE('31-OCT-2011 00:00:00', 'DD-MON-YYYY HH24:MI:SS')
              AND TO_DATE('04-NOV-2011 23:59:59', 'DD-MON-YYYY HH24:MI:SS')
 GROUP BY TRUNC(order_date);

如果您确实要求在您引用的时间段内每天的平均订单数量(不是平均数量),那么您需要运行:

SELECT AVG(orders_per_day)
  FROM (
       SELECT TRUNC(order_date), count(*) AS orders_per_day
         FROM <table>
        WHERE order_date 
               BETWEEN TO_DATE('31-OCT-2011 00:00:00', 'DD-MON-YYYY HH24:MI:SS')
                   AND TO_DATE('04-NOV-2011 23:59:59', 'DD-MON-YYYY HH24:MI:SS')
        GROUP BY TRUNC(order_date)
       );

希望它有所帮助...