mysql - 如何在 MySQL 中执行具有不同 ID 的计算?

标签 mysql sql

不确定如何提出这个问题。基本上我有一张 table :

create table sales (
bookcode int not null,
storecode int not null,
saledate date not null,
quantity int not null,
price decimal,
foreign key (bookcode) references books(bookcode),
foreign key (storecode) references stores(storecode)
);

我在这里要做的是计算每个商店代码的收入。它会将数量乘以价格,这很好,但我不知道如何获得它,所以如果有多个相同的商店代码,它会将它们组合在一起并给出总金额

例如:如果 sales 表中有两家商店的商店代码相同,均为 1,我想获取这两家商店的收入,并将它们显示为该商店代码的总计,而不是分别显示。我该怎么做?

最佳答案

您正在寻找的是 GROUP BY 子句,例如

SELECT storecode, SUM(quantity * price) AS total_sales
    FROM sales
    GROUP BY storecode;

此子句指示 SQL 引擎将具有相同 storecode 的行组合在一起,然后应用聚合函数来组合每组行的结果。在这种情况下,使用的聚合函数是SUM();其他常见的聚合函数包括 COUNT()AVG()MIN()MAX()GROUP_CONCAT()

请记住,如果您使用的是 GROUP BY 子句,则您选择的每一列都必须是被 GROUP 编辑的值之一 BY,或聚合函数。例如,您不能:

SELECT storecode, saledate FROM sales GROUP BY storecode  /* no! */

因为 saledate 既不是分组依据的列,也不是聚合函数。 (简单来说:有多个销售日期,查询引擎应该给你哪个?)

关于mysql - 如何在 MySQL 中执行具有不同 ID 的计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46384214/

相关文章:

Python/MySQL "Insert into"带变量

mysql - Google+ 用户 ID 的最佳列类型是什么?

sql - activerecord 相当于 SQL 'minus'

sql - 基于多个聚合列进行透视

mysql - 如何在 SQL 中的特定列中获取中间值

sql - 在 where 子句中使用计算字段

mysql - 获取那些不匹配的

php - 需要帮助改进我的聊天系统

mysql - 使用Mysql将表导入数据库时​​出现SQL语法错误

MySQL 从列中返回可能的对