请帮助我理解SQLite3给出的以下结果。
SELECT *
FROM quantities
WHERE product_id=1;
1|2|1|15,900000
96|4|1|1,000000
97|5|1|1,000000
98|3|1|1,400000
SELECT TOTAL(quantity)
FROM quantities
WHERE product_id=1;
18.0
SELECT SUM(quantity)
FROM quantities
WHERE product_id=1;
18.0
数量表中的最后一个字段quantity
为REAL
。
似乎在执行INT
总和之前已转换为REAL
。
我能解决这个问题吗?
答案 0 :(得分:2)
您的数据中有逗号,
代替小数点.
。
当添加列值时,sqlite只是尝试将列值解释为数值并放弃,直到找到无法转换为数字的内容,使用到目前为止遇到的任何数字:
sqlite> create table a(a);
sqlite> insert into a values('1,1'),('2.2'),('100foo');
sqlite> select sum(a) from a;
103.2
答案 1 :(得分:0)
我不明白这个问题......在sqlite中它适用于我。 下面的例子(你确定该列是真的吗?)
create table if not exists quantities (product_id integer,quantity real);
insert into quantities values (1, 15.9);
insert into quantities values (1, 1);
insert into quantities values (1, 1);
insert into quantities values (1, 1.4);
select product_id,
SUM(quantity)
FROM quantities
GROUP BY product_id;
并返回......
1 19.3
如果我使用TOTAL(而不是SUM(它也返回19.3
)可以看到一个工作实例 http://www.datagloop.com/?USERNAME=DATAGLOOP/SO_TRUNC