请你帮忙。
我有一个表名wqmram,我想按月计算列名s6的最小值和最大值。最小值不应该是零,因为我希望最小值大于零。
I have written the below query:
SELECT min(s6) AS Mins6,
max(s6) AS Maxs6,
partition_0,
partition_1
FROM wqmram
WHERE cast(s6 AS decimal(30,2)) != 0.00
GROUP BY partition_0,partition_1
ORDER BY partition_0,partition_1;
分区\u 0是年,分区\u 1是月。我得到的结果如下,这是错误的:
Mins6 Maxs6 partition_0 partition_1
1 1017 996 2019 11
2 1002 994 2019 12
3 00.09 958 2020 01
4 00.01 997 2020 02
5 100 999 2020 03
6 100 999 2020 04
7 1 99 2020 05
8 1000 998 2020 06
如果您看到上面的结果,那么最小值将大于最大值,这也是错误的。
有人能告诉我是什么问题吗?
1条答案
按热度按时间c2e8gylq1#
在计算字符串值之前,需要将字符串值转换为数字
min
以及max
,否则按字符串进行比较;一般来说,'996'
大于'1017'
,因为前者以'9'
后者以'1'
.在子查询中转换可能比重复
cast()
外部查询中的表达式: