2016-08-15 3 views
0

Я пытаюсь получить простую статистику о продажах в выбранный пользователем период. У меня есть этот запрос:Получение статистики за данный период в PostgreSQL

SELECT 
    "orders_order"."created_at"::date, 
    SUM(("meals_meal"."discount_price" * "orders_orderitem"."amount")) AS "price" 
FROM "orders_order" 
LEFT OUTER JOIN "orders_orderitem" ON ("orders_order"."id" = "orders_orderitem"."order_id") 
LEFT OUTER JOIN "meals_meal" ON ("orders_orderitem"."meal_id" = "meals_meal"."id") 
WHERE ("orders_order"."restaurant_id" = 36 
    AND "orders_order"."created_at" BETWEEN '2016-08-01T00:00:00+02:00'::timestamptz AND '2016-08-31T00:00:00+02:00'::timestamptz) 
GROUP BY "orders_order"."created_at" 
ORDER BY "orders_order"."created_at" ASC 

Который дает мне Результирующий набор выглядит как что:

enter image description here

Теперь то, что я хотел бы добиться того, что мои результаты сгруппированы по created_at колонке с ценами подвела. Таким образом, правильный выход для такого запроса должно быть как:

created_at | price 
------------------- 
2016-08-14 | 185.00 
+0

не должны «orders_order» «created_at» :: Дата быть в группе тоже.? –

+0

Черт ... Я пропустил это: P. Благодаря! –

+0

Можете ли вы принять ответ ниже, пожалуйста? –

ответ

0

Должно быть

SELECT 
    "orders_order"."created_at"::date, 
    SUM(("meals_meal"."discount_price" * "orders_orderitem"."amount")) AS "price" 
FROM "orders_order" 
LEFT OUTER JOIN "orders_orderitem" ON ("orders_order"."id" = "orders_orderitem"."order_id") 
LEFT OUTER JOIN "meals_meal" ON ("orders_orderitem"."meal_id" = "meals_meal"."id") 
WHERE ("orders_order"."restaurant_id" = 36 
    AND "orders_order"."created_at" BETWEEN '2016-08-01T00:00:00+02:00'::timestamptz AND '2016-08-31T00:00:00+02:00'::timestamptz) 
GROUP BY "orders_order"."created_at"::date 
ORDER BY "orders_order"."created_at"::date ASC