分组求和,将一列的数据求和

您所在的位置:网站首页 数据库分类统计求和 分组求和,将一列的数据求和

分组求和,将一列的数据求和

2023-06-20 01:02| 来源: 网络整理| 查看: 265

在数据库操作中常常会将某一列的具有相似性质的数据进行求和,昨天在做的项目中遇到了。后来请教了一下自己又摸索了一下,得出了解决方案,那就是分组求和。需求:将某列数据求和例子:

数据库内容为:

 

根据record_type进行分组再求和,也就是将1、2、3三种类型进行分组,所以结果预期为三行

 

再一种是根据record_date来分组,由于日期有两组,故预期分组也为两组,结果为同一日期的c、d列数据相加

 

总结:当需要进行对某一列的具有相似条件(对应于where中的条件)的数据进行合并时,使用group by将记录分组,再使用聚合函数对数据进行需要的操作。这样就可以使用一条语句将所有的数据进行分组求和。

 

创建例子中的数据的SQL语句为

1 CREATE DATABASE /*!32312 IF NOT EXISTS*/`group` /*!40100 DEFAULT CHARACTER SET utf8 */; 2 3 USE `group`; 4 5 /*Table structure for table `test` */ 6 7 DROP TABLE IF EXISTS `test`; 8 9 CREATE TABLE `test` ( 10 `id` int(10) NOT NULL AUTO_INCREMENT, 11 `record_date` date DEFAULT NULL, 12 `record_type` int(10) DEFAULT NULL, 13 `c` int(10) DEFAULT NULL, 14 `d` int(10) DEFAULT NULL, 15 PRIMARY KEY (`id`) 16 ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8; 17 18 /*Data for the table `test` */ 19 20 insert into `test`(`id`,`record_date`,`record_type`,`c`,`d`) values (1,'2013-10-14',1,1000,10000),(2,'2013-10-15',1,2000,20000),(3,'2013-10-14',2,3000,30000),(4,'2013-10-15',2,4000,40000),(5,'2013-10-14',3,5000,50000);

查询语句为

SELECT SUM(c) 'c列数据的和',SUM(d)'d列数据的和' FROM test WHERE record_date BETWEEN '2013-10-13' AND '2013-10-16' GROUP BY record_type ORDER BY record_type ASC

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3