Результаты MySQL Group ко дню с помощью метки времени

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

SELECT
    COUNT(id) as order_count,
    SUM(price + shipping_price) as order_sum,
    DAY(FROM_UNIXTIME(created)) as day
FROM `order`
WHERE '.implode(' AND ', $where).'

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

Примечание: Интегрирование используется ТОЛЬКО для определения периода времени (ГДЕ создано> = МЕТКА ВРЕМЕНИ И <= МЕТКА ВРЕМЕНИ)

Обновление

Без GROUP BY day

Array ( 
    [order_count] => 3
    [order_sum] => 69.70
    [day] => 17
)

С GROUP BY day

Array ( 
    [order_count] => 1
    [order_sum] => 24.90
    [day] => 17
)

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

27
задан Webnet 20 April 2010 в 14:01
поделиться

2 ответа

Вы просто забыли добавить GROUP BY ... в конце?

SELECT
    COUNT(id) as order_count,
    SUM(price + shipping_price) as order_sum,
    DAY(FROM_UNIXTIME(created)) as order_day
FROM `order`
WHERE '.implode(' AND ', $where).'
GROUP BY order_day

ПРИМЕЧАНИЕ:

Вы не можете использовать как день для столбца дня, поскольку день является функцией MySQL. Используйте что-то вроде order_day .

Of Unicorns

Согласно комментарию @OMG Unicorn, вы можете использовать:

DAY(FROM_UNIXTIME(created)) as `day`

Пока заключить день в ` обратными кавычками.

41
ответ дан 28 November 2019 в 05:21
поделиться

Вы, вероятно, работаете в конфликт имен между DAY () (функция в MySQL) и day (имя вашей переменной). Вы пробовали использовать что-то, что не конфликтует, например order_day ?

0
ответ дан 28 November 2019 в 05:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: