最大/最小值在mysql中给了我错误的值

最大/最小值在mysql中给了我错误的值,mysql,max,min,Mysql,Max,Min,我正在尝试获取数据集的MAX()或MIN()值 样本数据: equipment_id, value, updateTimestamp 77, 81.57, 2013-05-28 12:00:00 77, 89.56, 2013-05-28 13:00:00 77, 92.76, 2013-05-28 14:00:00 77, 94.15, 2013-05-28 15:00:00 77, 97.66, 2013-05-28 16:00:00 77, 95.07, 2013-05-28 17:00

我正在尝试获取数据集的
MAX()
MIN()

样本数据:

equipment_id, value, updateTimestamp 77, 81.57, 2013-05-28 12:00:00 77, 89.56, 2013-05-28 13:00:00 77, 92.76, 2013-05-28 14:00:00 77, 94.15, 2013-05-28 15:00:00 77, 97.66, 2013-05-28 16:00:00 77, 95.07, 2013-05-28 17:00:00 77, 95.15, 2013-05-28 18:00:00 77, 92.90, 2013-05-28 19:00:00 77, 96.16, 2013-05-28 20:00:00 77, 99.56, 2013-05-28 21:00:00 77, 101.67, 2013-05-28 22:00:00 77, 103.09, 2013-05-28 23:00:00 77, 103.34, 2013-05-29 00:00:00 77, 100.24, 2013-05-29 01:00:00 77, 99.66, 2013-05-29 02:00:00 77, 99.86, 2013-05-29 03:00:00 77, 98.38, 2013-05-29 04:00:00 77, 97.97, 2013-05-29 05:00:00 77, 98.06, 2013-05-29 06:00:00 77, 96.23, 2013-05-29 07:00:00 77, 95.92, 2013-05-29 08:00:00 77, 98.89, 2013-05-29 09:00:00 77, 97.73, 2013-05-29 10:00:00 77, 85.95, 2013-05-29 11:00:00 77, 73.72, 2013-05-29 12:00:00 77, 62.60, 2013-05-29 13:00:00
事实上,正确答案应该是
62.60
。对于max,我得到的值为
99.86
。似乎
MIN()
MAX()
只计算第一个数字。知道如何解决这个问题吗?

该值似乎存储为字符串,而不是数字。请尝试以下方法:

SELECT dv.equipment_id, ROUND(MIN(cast(dv.value as decimal(5, 2))), 2) as value 

float不是可用于强制转换的类型。然而,十进制是<代码>选择dv.equipment_id,四舍五入(最大值(离散值为十进制(5,2))),2)作为值对我有效。谢谢你的快速回复。@austin。我的错。在MySQL中,您只需添加0(
+0
)即可转换为数字。但是,
decimal()
,是标准的SQL,如果合理的话,我更喜欢它。
SELECT dv.equipment_id, ROUND(MIN(cast(dv.value as decimal(5, 2))), 2) as value