Sum函数不返回小数

时间:2014-04-01 17:08:07

标签: mysql sql sum decimal

尝试使用sum来显示小数,但将其转换为整数。不确定是什么问题。这是sql小提琴:

http://sqlfiddle.com/#!2/b2961/1

SQL查询:

Select sum(PH) as PH from googlechart;

4 个答案:

答案 0 :(得分:2)

根据用户的评论,他们并不打算对字段的值求和,而只是想以数字方式使用这些值。之前的答案是

select SUM(CAST(REPLACE(PH, ",", ".") AS DECIMAL(5,2))) from googlechart;

实际答案应该是:

select CAST(REPLACE(PH, ",", ".") AS DECIMAL(5,2)) from googlechart;

上面应该可以工作,但是这个小提琴目前正在测试它。说,实际上,你不应该将你想要的东西存储在以后作为任何类型的字符串。它应该在你的情况下存储为十进制或等效,并从那里你应该简单地转换。当您将数据输出给用户时,进入a。它既可以提高查询的速度,也可以让你使用内部函数到数据库,而不必进行3次单独的调用来做同样的事情。

这样说,您将日期和时间分成两个单独的字段。在大多数情况下,你最好将它们存储为单个字段,并相应地对它们进行逻辑处理,因为除非你也知道这一天,否则值本身通常很少,你仍然可以在时间上做逻辑如果你需要,可以使用。

答案 1 :(得分:1)

将PH值更改为08.1109.34,而不是08,1109,34

INSERT INTO `googlechart` (`id`, `Date`, `Time`, `PH`, `Chlorine`, `Temperature`) VALUES
(7, '2014-04-01', '09:00:00', '08,11', '9.00', '12.00'),
(9, '2014-04-02', '11:00:00', '09,34', '10.34', '2.34');

INSERT INTO `googlechart` (`id`, `Date`, `Time`, `PH`, `Chlorine`, `Temperature`) VALUES
    (7, '2014-04-01', '09:00:00', '08.11', '9.00', '12.00'),
    (9, '2014-04-02', '11:00:00', '09.34', '10.34', '2.34');

答案 2 :(得分:0)

您将PH设置为varchar类型,您可以将其转换为十进制。

答案 3 :(得分:0)

问题是你使用逗号分隔小数,你应该使用“。” 。 并且还尝试避免将数字类型作为字符串处理。 你应该只是喜欢:

Insert into Customers(Name, Age) Values ('Bill', 4).