使用MySQL分组计算不同表的总和(mysql不同表分组求和)

使用MySQL分组计算不同表的总和

在实际开发中,我们常常需要对不同表中的数据进行汇总统计。MySQL作为一种广泛应用的关系型数据库,在处理数据聚合和统计方面表现良好。本文将介绍如何使用MySQL的分组查询功能,同时跨越多个表格计算总和。

1. 创建数据表

在本文中,我们将创建3个数据表,分别为“order”、“order_detl”和“product”。数据表“order”存储订单信息,包括订单编号、顾客姓名和订单日期等。数据表“order_detl”存储订单详细信息,包括订单编号、产品编号和商品数量等。数据表“product”存储产品信息,包括产品编号、产品名称和单价等。

CREATE TABLE `order` (

`order_id` int(11) NOT NULL AUTO_INCREMENT,

`customer_name` varchar(50) NOT NULL,

`order_date` date NOT NULL,

PRIMARY KEY (`order_id`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

CREATE TABLE `order_detl` (

`order_id` int(11) NOT NULL,

`product_id` int(11) NOT NULL,

`quantity` int(11) NOT NULL,

PRIMARY KEY (`order_id`,`product_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `product` (

`product_id` int(11) NOT NULL,

`product_name` varchar(50) NOT NULL,

`unit_price` decimal(10,2) NOT NULL,

PRIMARY KEY (`product_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2. 添加数据

我们使用以下代码向数据表中插入一些数据,以便后续查询。

INSERT INTO `order` (`customer_name`, `order_date`) VALUES (‘张三’, ‘2020-01-01’);

INSERT INTO `order` (`customer_name`, `order_date`) VALUES (‘李四’, ‘2020-01-02’);

INSERT INTO `order_detl` (`order_id`, `product_id`, `quantity`) VALUES (1, 1, 2);

INSERT INTO `order_detl` (`order_id`, `product_id`, `quantity`) VALUES (1, 2, 1);

INSERT INTO `order_detl` (`order_id`, `product_id`, `quantity`) VALUES (2, 1, 3);

INSERT INTO `order_detl` (`order_id`, `product_id`, `quantity`) VALUES (2, 3, 1);

INSERT INTO `product` (`product_id`, `product_name`, `unit_price`) VALUES (1, ‘商品1’, 10.00);

INSERT INTO `product` (`product_id`, `product_name`, `unit_price`) VALUES (2, ‘商品2’, 20.00);

INSERT INTO `product` (`product_id`, `product_name`, `unit_price`) VALUES (3, ‘商品3’, 30.00);

3. 查询数据

现在我们可以使用以下代码进行数据查询。查找每个订单中每种产品的销售总额,并统计订单的销售总额。

SELECT `order`.`order_id`, `order`.`customer_name`,

SUM(`order_detl`.`quantity` * `product`.`unit_price`) AS `total_amount`

FROM `order`

JOIN `order_detl` ON `order`.`order_id` = `order_detl`.`order_id`

JOIN `product` ON `order_detl`.`product_id` = `product`.`product_id`

GROUP BY `order`.`order_id`;

以上代码中,我们使用了SUM函数来计算每种产品的销售总额。同时,我们使用JOIN语句跨越多个数据表来连接数据。我们使用GROUP BY语句将数据按照订单进行分组。

4. 结果输出

查询的结果如下所示:

order_id | customer_name | total_amount

——– | ————- | ————

1 | 张三 | 40.00

2 | 李四 | 80.00

以上结果显示,订单编号为1的订单共售出商品1(单价10元)2件,商品2(单价20元)1件,共计40元;订单编号为2的订单共售出商品1(单价10元)3件,商品3(单价30元)1件,共计80元。

总结

MySQL提供了丰富的聚合函数和数据查询功能,支持跨越多个数据表进行数据连接和汇总统计。在工作中,我们可以灵活应用MySQL的分组查询功能,高效完成数据分析和统计任务。


数据运维技术 » 使用MySQL分组计算不同表的总和(mysql不同表分组求和)