我目前正试图从同一列获得百分比差异,但日期不同。
这是我正在测试的查询:
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
答案 0 :(得分:0)
您的专栏senaste
是VARCHAR(5)
,其中包含'159,4'
等数据。不应使用VARCHAR
字段来存储数字,尤其是如果您打算让MySQL在数值上运行数学。
您应该使用DECIMAL(10,1)
(假设您只需要一个十进制数字)并且您应该使用句点,而不是数字格式的逗号。 (例如,'159.4'
)