SQLite REAL总和与总数

时间:2013-11-21 10:36:48

标签: sql sqlite select floating-point sum

请帮助我理解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

数量表中的最后一个字段quantityREAL

似乎在执行INT总和之前已转换为REAL。 我能解决这个问题吗?

2 个答案:

答案 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