Запрос, который возвращает среднее количество записей в определенном диапазоне дат

#oracle #oracle11g

#Oracle #oracle11g

Вопрос:

У меня есть таблица со следующими столбцами

 OrderID     Number
ProductID   Number 
Order_date  Datetime
Qty         number
  

Как я могу получить среднее количество размещенных заказов в день для диапазона дат. Я хочу знать среднее количество заказов, размещенных в день с 31 октября по 4 ноября, включая оба дня.

Заранее спасибо.

Ответ №1:

Ваш вопрос немного противоречив, он сначала запрашивает среднее количество заказов в день, а затем запрашивает средние заказы (что предполагает, что вам нужно среднее количество, а не среднее количество заказов)

Это должно дать вам среднее количество за каждый день для указанного вами диапазона (однако вставьте ваше имя таблицы):

 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)
       );
  

Надеюсь, это поможет…