2010-06-21 2 views
0

Я забираю несколько статусов за определенный период времени, и я хотел бы вытащить еще один стат, который будет «средним объемом продаж в день» за этот период времени. Я не уверен, как делать ежедневные средние значения за определенный период времени, может ли кто-нибудь дать совет?MySQL Ежедневно Средне за месяц

$whereSql = 'WHERE created >= '.$endTimestamp.' AND 
      created <= '.$startTimestamp; 

    $tru->query->run(array(
     'name' => 'get-figures', 
     'sql' => 'SELECT 
       SUM(price) AS total_sales, 
       COUNT(id) AS total_orders, 
       AVG(total) AS order_total_average 
       (SELECT 
         SUM(quantity) 
        FROM `order_product` 
        INNER JOIN `order` ON (
         `order`.id = order_product.order_id AND 
         `order`.created >= '.$endTimestamp.' AND 
         `order`.created <= '.$startTimestamp.' AND 
         `order`.type_id = '.$type->getId().' 
        ) 
       ) as total_units 
      FROM `order` 
      '.$whereSql.' AND type_id = '.$type->getId().'', 
     'connection' => 'store' 
    )); 

ответ

0

Если я правильно понимаю, что вы хотите, вы можете просто разделить общий объем продаж на количество дней в выбранный период времени. Добавьте этот столбец в оператор внешнего выбора: SUM(price)/DATEDIFF($endTimestamp,$startTimestamp)

Также убедитесь, что вы избегаете значений, заданных пользователем, с помощью mysql_real_escape_string, иначе у вас будут уязвимости SQL-инъекций.

0

вам нужно сгруппировать по to_char даты, которая распространяется до дня (возможно «ДДД») и вам потребуется где компонент пункт, который ограничивает для надлежащего диапазона дат

Смежные вопросы