2010-06-21 5 views
0

Je tire plusieurs statuts sur une période de temps spécifique et je voudrais tirer une autre statistique qui serait "ventes moyennes par jour" au cours de cette période. Je ne sais pas comment faire des moyennes quotidiennes sur une période de temps donnée, quelqu'un peut-il donner des conseils?MySQL Daily Moyenne sur un mois

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

Répondre

0

Si je comprends bien ce que vous voulez, vous pouvez simplement diviser le total des ventes par le nombre de jours dans la période sélectionnée. Ajouter cette colonne à l'instruction select externe: SUM(price)/DATEDIFF($endTimestamp,$startTimestamp)

Assurez-vous également que vous fuyez les valeurs fournies par l'utilisateur avec mysql_real_escape_string, sinon vous aurez des vulnérabilités d'injection SQL.

0

vous devez groupe par un to_char la date à laquelle est scope le jour (peut-être « ddd ») et vous aurez besoin d'un où le composant de la clause qui limite la période appropriée