Redshift — Сортировка данных по неделям

#sql #sql-order-by #amazon-redshift

#sql #sql-порядок по #amazon-redshift

Вопрос:

Я пытаюсь отсортировать некоторые данные в Redshift по неделям.

 select CONCAT(CONCAT('Week', ' '), 
EXTRACT(WEEK FROM sale_date::date   '1 day'::interval)) as date,count(*) as total 
from sales 
where sale_date between ('2019-03-22' - 30) and '2019-03-22' 
group by EXTRACT(WEEK FROM  sale_date::date   '1 day'::interval)
order by 1 asc;
  

Приведенный выше запрос работает нормально, однако результат выглядит следующим образом:

 Week 10, 10
Week 11, 20
Week 12, 3
Week 7, 12
Week 8, 3
Week 9, 5
  

Как я мог бы изменить приведенный выше запрос таким образом, чтобы результат был таким, как показано ниже:

 Week 7, 12
Week 8, 3
Week 9, 5
Week 10, 10
Week 11, 20
Week 12, 3
  

Ответ №1:

вам нужно преобразовать извлеченное значение недели в оператор numeric type for order by . Итак, преобразуйте

order by 1 asc Для

order by cast(EXTRACT(WEEK FROM sale_date::date '1 day'::interval) as integer)