MySQL显示错误的百分比吗?

时间:2015-11-17 17:44:31

标签: mysql

我目前正试图从同一列获得百分比差异,但日期不同。

这是我正在测试的查询:

SELECT     curr.slug,
           curr.senaste * 100 / NULLIF(prev.senaste, 0) as percentage
FROM       aktier AS curr
INNER JOIN aktier AS prev
        ON curr.slug = prev.slug
WHERE      date(prev.timestamp) = '2015-11-16'
AND        date(curr.timestamp) = CURDATE()
AND        curr.slug = 'abb-ltd'

如果我运行此查询,我将得到结果:103.14465408805032

但是,如果我运行查询SELECT senaste FROM aktier WHERE slug = 'abb-ltd',我会得到两个值: 159,4 164,1

当我在我的计算器上运行1-(159,4/164,1)时,我会得到以下结果:0,2864

目前的设置有什么问题?并且:我如何从查询中获得显示2,9%的结果?

列senaste是varchar(5) utf8_unicode_ci

SQL-fiddle:http://sqlfiddle.com/#!9/8a859

1 个答案:

答案 0 :(得分:0)

您的专栏senasteVARCHAR(5),其中包含'159,4'等数据。不应使用VARCHAR字段来存储数字,尤其是如果您打算让MySQL在数值上运行数学。

您应该使用DECIMAL(10,1)(假设您只需要一个十进制数字)并且您应该使用句点,而不是数字格式的逗号。 (例如,'159.4'

相关问题