如何在MySQL中使用不同的ID执行计算?

时间:2017-09-23 20:53:24

标签: mysql sql

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

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,我想获得两者的收入,并将它们显示为该商店代码的总质量,而不是单独显示它们。我怎么能这样做?

3 个答案:

答案 0 :(得分:4)

您正在寻找的是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既不是分组的列,也不是聚合函数。 (简单地说:有多个销售日期,哪一个是查询引擎应该给你的?)

答案 1 :(得分:0)

我认为你需要这样的东西:

SELECT storecode, SUM(price*quantity) as revenue FROM sales GROUP BY storecode;

答案 2 :(得分:-1)

CREATE TABLE IF NOT NOT EXISTS sales(   bookcode int(6)unsigned NOT NULL,   storecode int(6)unsigned NOT NULL,   saledate日期非空,   quantity int(6)unsigned NOT NULL,   小数price

)DEFAULT CHARSET = utf8; INSERT INTO salesbookcodestorecodesaledatequantityprice)VALUES   ('1','1','2017-09-24',3,5),   ('1','1','2017-09-24',5,5),   ('1','2','2017-09-24',10,5),   ('1','2','2017-09-24',10,10);

按商店代码

选择商店代码,总和(数量*价格)作为销售组的收入