sql - 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
解决方案
您需要将提取的周值转换为numeric type
fororder by
语句。所以转换
order by 1 asc
至
order by cast(EXTRACT(WEEK FROM sale_date::date + '1 day'::interval) as integer)
推荐阅读
- mysql - 运行 python 应用程序时 MySql 访问被拒绝 [Ubuntu 1604/NGINX/uWSGI]
- scala - log4j2.properties 调整为仅为 Spark 设置特定的日志级别
- c# - 我想在整数数组的连续子集中找到一个公共数字的最大频率
- php - 如何动态更改输入的文本字体系列值?
- java - 为什么在静态方法中赋值后对象引用不同?
- python - 如何使文件睡眠并从python中的另一个文件中使用它的功能
- azure-devops - 如何在 Visual Studio Team Services Online 中管理整个团队的工作区?
- css - 添加水平滚动阴影效果
- sql - 显示使用外键创建表的错误
- javascript - 错误:else if 语句中的预期声明或语句