发现mysql 4.0.18 for nt 的sum函数的计算误差

原创 2004年10月01日 11:47:00

发现mysql 4.0.18 for nt 的sum函数的计算误差
mysql> create table ch3(ID char(32), V decimal(18,2));
Query OK, 0 rows affected (0.12 sec)

mysql> insert into ch3 select * from vc2;
Query OK, 8192 rows affected (1.24 sec)
Records: 8192  Duplicates: 0  Warnings: 0


mysql> select max(v) from ch3;
+-------------+
| max(v)      |
+-------------+
| 99999999.99 |
+-------------+
1 row in set (1.17 sec)

mysql> select min(v) from ch3;
+-------------+
| min(v)      |
+-------------+
| 99999999.99 |
+-------------+
1 row in set (1.17 sec)
mysql> select sum(v) from ch3;
+-----------------+
| sum(v)          |
+-----------------+
| 819199999918.02 |
+-----------------+
1 row in set (0.08 sec)

mysql> update ch3 set v=100000000;
Query OK, 8192 rows affected (0.12 sec)
Rows matched: 8192  Changed: 8192  Warnings: 0

mysql> select sum(v) from ch3;
+-----------------+
| sum(v)          |
+-----------------+
| 819200000000.00 |
+-----------------+
1 row in set (0.06 sec)

mysql> update ch3 set v=100000000-0.01;
Query OK, 8192 rows affected (0.25 sec)
Rows matched: 8192  Changed: 8192  Warnings: 0

mysql> select sum(v) from ch3;
+-----------------+
| sum(v)          |
+-----------------+
| 819199999918.02 |
+-----------------+
1 row in set (0.08 sec)

mysql> update ch3 set v=100000000+0.01;
Query OK, 8192 rows affected (0.23 sec)
Rows matched: 8192  Changed: 8192  Warnings: 0

mysql> select sum(v) from ch3;
+-----------------+
| sum(v)          |
+-----------------+
| 819200000081.98 |
+-----------------+
1 row in set (0.09 sec)
mysql> select 99999999.99*8192;
+------------------+
| 99999999.99*8192 |
+------------------+
|  819199999918.08 |
+------------------+
1 row in set (0.00 sec)

统计一下哪些数据库的sum函数有计算误差

方法:create table aa( id char(10),v decimal(18,2));insert into aa values(1,99999999.99);插入8192个相同的记录se...
  • l1t
  • l1t
  • 2004年10月13日 12:08
  • 2891

mysql 中SUM 函数的高级用法

mysql的手册中对SUM函数的介绍非常简单和含糊, 今天在搜资料的时候发现SUM函数的参数还可以加入条件判断.  比如有如下的一个表: 日期             支出项目名称      ...
  • shoyer
  • shoyer
  • 2013年07月01日 15:38
  • 1386

mysql 中sum (if()) 用法

原表: id    fenlei     time 1      分类1      20130316 2      分类2      20130316 3      分类3      2013...
  • design321
  • design321
  • 2013年03月19日 11:44
  • 7897

mysql sum 统计数值出现精度问题

mysql sum 累计求和精度问题
  • Ditto_zhou
  • Ditto_zhou
  • 2017年06月23日 15:50
  • 928

MYSQL 中SUM函数和关联查询

写在前面:昨晚迷迷糊糊的,做积分求和时候,被困住了,本来的需求是有两张表user用户表和credit用户积分表,要统计出用户的总积分并按照积分和递减排序,其中的字段写在下面: user表中 id...
  • LLopensorce
  • LLopensorce
  • 2016年12月17日 11:29
  • 2630

MySQL sum()函数的一些注意点

在使用SSM框架的时候, 去数据查询语句使用到了 sum()求和函数,sum函数会给结果自动转型,在java中类型变成了 BigDecimal ,如果不是用这个类型去接收就会报错。 代码如下,  ...
  • u013303551
  • u013303551
  • 2016年07月13日 11:12
  • 3582

MYSQL 函数 IF() 的使用 (MYSQL SUM IF)

SUM 相信大家都会用, 例如: SELECT SUM(extcredits1) AS e1 FROM pre_common_credit_log; 复制代码 只是有的时候,...
  • u014704496
  • u014704496
  • 2014年05月10日 09:30
  • 643

mysql行转列(综合利用if + sum)---为解决OSC的一个朋友的问题

mysql用sum+if 完成行转列(行表数据如下) 首先思考如何创建出列结构 [sql] view plaincopy SELECT...
  • jayxujia123
  • jayxujia123
  • 2014年03月21日 19:06
  • 7107

mysql sum() 求和函数的用法

SUM函数的语法是:  代码如下 复制代码 SELECT SUM(expression ) FROM tables WHERE predicates;   表达式可以是一个数值字段或公式...
  • k8080880
  • k8080880
  • 2013年09月06日 10:47
  • 168560

MySQL的sum函数优化

有一张表,结构如下 :    +------------------+--------------+------+-----+---------+----------------+ | Field ...
  • xtdhqdhq
  • xtdhqdhq
  • 2014年01月21日 11:15
  • 5311
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:发现mysql 4.0.18 for nt 的sum函数的计算误差
举报原因:
原因补充:

(最多只允许输入30个字)