sql - 从整数转换后如何按名称排序月份?
问题描述
我正在学习 Postgresql。我有这张带有日期(DateTime 类型)和订单的表。我的目标是显示一个月内完成的订单数量,但我还需要按顺序显示月份的名称。
我能够完成第一部分,但我无法弄清楚如何订购月份,因为我已经将它们从日期转换为字符串。所以这就是我一直在做的事情:
SELECT TO_CHAR(created_at, 'Month') as month_name, COUNT(id) as orders
FROM orders
WHERE aasm_state != 'cart'
GROUP BY month_name
ORDER BY to_date(month_name, 'Month')
然后,我得到“错误:列“month_name”不存在”。
我知道问题出在最后一行,因为如果我把它拿出来,我就不会出错。
提前致谢。
解决方案
您order by
可以只使用列别名:
SELECT TO_CHAR(created_at, 'Month') as month_name, COUNT(id) as orders
FROM orders
WHERE aasm_state <> 'cart'
GROUP BY month_name
ORDER BY month_name;
您查询中的问题是month_name
. 如果代码运行,您仍然会收到类型转换错误(我认为)。
所以,month_name
可以用在ORDER BY
. 但是,它不能用于表达式。
按时间顺序排序的最简单方法是:
order by min(created_at)
推荐阅读
- javascript - 这些库之一不适用于 react-native
- c# - 实例化一个特定的变量会产生影响吗?C# 统一
- javascript - zoom.js 函数超出了 D3js 最大调用堆栈
- c - 从文件中读取行直到换行并将其存储在字符数组中
- amazon-web-services - 在 AWS CDK 中,我如何在 app.py 中判断它是部署还是销毁?
- apache-kafka - kafka mirrormaker 2 自定义分区器
- python - SyntaxError:文件中以“\xfe”开头的非 UTF-8 代码
- c# - 获取数组中的gameogject名称
- javascript - 在两个不同的组件中更新 flatList
- r - 如何从长字符串创建日期变量