不确定如何提出这个问题。基本上我有一张 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/