Я пишу запрос, который будет показывать продажи за каждую неделю в течение двух лет.Поэтому я хочу сравнить недели с разными годами.Я получаю такие результаты (week
- это число недель в этом году, например, первая неделя, вторая неделя 2010 года):
week|year|price
1 |2010|5
1 |2011|10
2 |2010|7
2 |2011|13
Все будет хорошо, но когда я пытаюсь отобразить результаты на графике, он считает как первые недели и так далее как одну и помещает его в одно поле.Итак, на графике я вижу, что первые недели продаж составляют 15, а секунд - 20. Поэтому я попытался объединить столбец недели с другим столбцом, чтобы отделить тот же номер недели для другого года.
SELECT
min(so.id) as id,
date_part('week', so.date_order) || ' ' ||
CASE
WHEN
so.date_order >='2010-01-01' and so.date_order <= '2010-12-31'
THEN
'2010'
WHEN
so.date_order >='2010-01-01' and so.date_order <= '2011-12-31'
THEN
'2011'
END as week,
date_part('year', so.date_order) as year,
count(*) as amount,
sum(sol.price_unit) as price
FROM
sale_order as so,
sale_order_line as sol
WHERE
sol.order_id=so.id and
so.date_order >= '2010-01-01' and so.date_order <= '2011-12-31'
GROUP BY
week,
year
Но затем столбецНеделя сортируется по типу символа, и я получаю результаты в следующем порядке:
week |year|sales
1 - 2010 |2010|5
1 - 2011 |2011|10
10 - 2010|2010|15
11 - 2011|2011|12
2 - 2010|2010|7
2 - 2011|2011|13
Если я пытаюсь ORDER BY to_number(week, text(99999999))
, я получаю сообщение об ошибке, что столбец week
не существует.Я думаю, потому что это временный столбец?
Итак, мой вопрос: как правильно отсортировать столбец по временной неделе или есть лучший способ его отсортировать? :)) 1015 *