Mysql中sum和group by联用求和为什么会计算不准确?
一、Mysql中sum和group by联用求和为什么会计算不准确
因为在MySQL中,GROUP BY 语句根据一个或多个列对结果集进行分组。在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)。
GROUP BY 语法
SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
实例演示
本章节实例使用到了以下表结构及数据,使用前我们可以先将以下数据导入数据库中。
SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;
— —————————-
— Table structure for employee_tbl
— —————————-
DROP TABLE IF EXISTS employee_tbl;
CREATE TABLE employee_tbl (
id int(11) NOT NULL,
name char(10) NOT NULL DEFAULT ”,
date datetime NOT NULL,
signin tinyint(4) NOT NULL DEFAULT ‘0’ COMMENT ‘登录次数’,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
— —————————-
— Records of employee_tbl
— —————————-
BEGIN;
INSERT INTO employee_tbl VALUES (‘1’, ‘小明’, ‘2016-04-22 15:25:33’, ‘1’), (‘2’, ‘小王’, ‘2016-04-20 15:25:47’, ‘3’), (‘3’, ‘小丽’, ‘2016-04-19 15:26:02’, ‘2’), (‘4’, ‘小王’, ‘2016-04-07 15:26:14’, ‘4’), (‘5’, ‘小明’, ‘2016-04-11 15:26:40’, ‘4’), (‘6’, ‘小明’, ‘2016-04-04 15:26:54’, ‘2’);
COMMIT;
SET FOREIGN_KEY_CHECKS = 1;
导入成功后,执行以下 SQL 语句:
mysql> set names utf8;
mysql> SELECT * FROM employee_tbl;
+—-+——–+———————+——–+
| id | name | date | signin |
+—-+——–+———————+——–+
| 1 | 小明 | 2016-04-22 15:25:33 | 1 |
| 2 | 小王 | 2016-04-20 15:25:47 | 3 |
| 3 | 小丽 | 2016-04-19 15:26:02 | 2 |
| 4 | 小王 | 2016-04-07 15:26:14 | 4 |
| 5 | 小明 | 2016-04-11 15:26:40 | 4 |
| 6 | 小明 | 2016-04-04 15:26:54 | 2 |
+—-+——–+———————+——–+
6 rows in set (0.00 sec)
接下来我们使用 GROUP BY 语句 将数据表按名字进行分组,并统计每个人有多少条记录:
mysql> SELECT name, COUNT(*) FROM employee_tbl GROUP BY name;
+——–+———-+
| name | COUNT(*) |
+——–+———-+
| 小丽 | 1 |
| 小明 | 3 |
| 小王 | 2 |
+——–+———-+
3 rows in set (0.01 sec)
WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…),使用 WITH ROLLUP,此函数是对聚合函数进行求和,注意 with rollup是对 group by 后的名列前茅个字段,进行分组求和。
延伸阅读:
二、数据库和 SQL 概念
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它的产生距今已有六十多年。随着信息技术和市场的发展,数据库变得无处不在:它在电子商务、银行系统等众多领域都被广泛使用,且成为其系统的重要组成部分。
数据库用于记录数据,使用数据库记录数据可以表现出各种数据间的联系,也可以很方便地对所记录的数据进行增、删、改、查等操作。
结构化查询语言(Structured Query Language)简称 SQL,是上世纪 70 年代由 IBM 公司开发,用于对数据库进行操作的语言。更详细地说,SQL 是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统,同时也是数据库脚本文件的扩展名。

相关推荐HOT
更多>>
oracle和sqlserver优点是什么?
一、oracle的优点 1、高性能Oracle数据库是一种高性能的数据库管理系统,它可以处理大量数据,并在几乎任何规模的应用程序中提供高可用性。Orac...详情>>
2023-10-17 23:33:40
Windows下什么客户端支持ssh远程连接MySQL数据库?
一、Windows支持ssh远程连接MySQL数据库的客户端1、PuTTYPuTTY是一个免费、开源的SSH和Telnet客户端工具,它可以在Windows上与MySQL服务器建立S...详情>>
2023-10-17 23:02:03
有什么好用的sqlserver数据库客户端软件?
1、SQL Server Management Studio (SSMS)SQL Server Management Studio 是用于管理SQL Server基础架构的集成环境。Managemen详情>>
2023-10-17 21:55:55
为什么 Informix 数据库需要定期 UPDATE STATISTICS?
一、为什么 Informix 数据库需要定期 UPDATE STATISTICS因为Informix 数据库需要定期 UPDATE STATISTICS可以查询统计优化,对频繁插入数据的表...详情>>
2023-10-17 21:25:14热门推荐
oracle和sqlserver优点是什么?
沸Windows下什么客户端支持ssh远程连接MySQL数据库?
热spyder怎样读取sql server的数据库?
热有什么好用的sqlserver数据库客户端软件?
新为什么 Informix 数据库需要定期 UPDATE STATISTICS?
memcached、Redis缓存的数据都是key-value的形式,那缓存时,具体是key、value分别是怎样的数据呢?
plsqldev里的SQL窗口文件没保存怎么找回?
HTML5的WEB SQL Database和IndexDB的用法和区别?
在oracle中,select * from dual where ”=”为什么返回的是空?
Mysql中sum和group by联用求和为什么会计算不准确?
Linux配置开机自启动执行脚本方法有哪些?
jmeter性能测试步骤?
TCL语言都能做什么?
运算符->*是什么意思?
技术干货






