MySQL Daily Среднее за месяц - PullRequest
0 голосов
/ 21 июня 2010

Я проверяю несколько статусов за определенный период времени, и я хотел бы получить другую статистику, которая была бы "средней продажей в день" за этот период времени.Я не уверен, как сделать среднесуточные за определенный период времени, кто-нибудь может дать какой-нибудь совет?

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

Ответы [ 2 ]

0 голосов
/ 21 июня 2010

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

Также убедитесь, что вы используете экранированные пользователем значения с помощью mysql_real_escape_string, в противном случае у вас будут уязвимости внедрения SQL.

0 голосов
/ 21 июня 2010

вам нужно сгруппировать по to_char даты, которая ограничена днем ​​(возможно, 'ddd') и вам понадобится компонент условия where, который ограничен соответствующим диапазоном дат

...