2013-12-07 5 views
1

Я создал запрос, который предназначен для расчета суммы денег, которую я делаю, после вычитания стоимости продуктов (я не знаю бизнес-условия) за данную неделю.GROUP BY week возвращает неверные результаты

Я собираюсь получить £ 268,38, но вместо этого я получаю £ 203,64 за неделю, начиная с 2-8 декабря.

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

SELECT 
      ROUND(SUM(sell_price), 2) AS sell_price, 
      ROUND(SUM((sell_price - 2.8)/100 * 17.25 + 0.49), 2) AS fees, 
      ROUND(SUM(buy_price), 2) AS buy_price, 
      ROUND(SUM(sell_price - ((sell_price - 2.8)/100*17.25+0.49) - buy_price), 2) AS margin, 
      time 
      FROM order_items 
      GROUP BY WEEK(FROM_UNIXTIME(time), 1) 
      ORDER BY time DESC 

UPDATE:

Это действительно странно, но я получаю разные результаты в sqlfiddle тогда я, когда я запускаю запрос в PHPMyAdmin

http://www.sqlfiddle.com/#!2/d2d4a/1

+2

Можете ли вы создать [sqlfiddle] (http://www.sqlfiddle.com) с помощью strucutre и некоторых выборочных данных? –

+0

@FilipeSilva OK, но это может занять некоторое время –

+0

@FilipeSilva обновленный –

ответ

2

Я думаю, что ваш выбор неправильно. Если вы хотите получить все слабые, вам нужно изменить время на НЕДЕЛЯ (FROM_UNIXTIME (время), 1).

1

Как правило:

При выборе нормальных столбцов (например, время) и агрегатные функции (например, сумма, минимальное, максимальное, количество), то GROUP BY-п всегда список нормальных колонок. (MySQL позволяет вам взять подмножество обычных столбцов по соображениям производительности, хотя).

Итак, в вашем примере, если вы хотите иметь еженедельную сумму, вы должны выбрать неделю, как предложил Питер, а затем совокупные расчеты. Группа на той же неделе, что и в строке выбора.

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