2017-09-23 65 views
0

不知道如何提出这个问题。基本上我有一张桌子:如何在MySQL中使用不同的ID执行计算?

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) 
); 

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

例如:如果有销售表中的两个商店的商店代码为1,我希望获得两者的收入,并将它们显示为该商店代码的总质量,而不是单独显示。我怎样才能做到这一点?

回答

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子句,则您选择的每个列必须是其中一个值,即 ed BY或集合函数。举例来说,你不能:

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

因为saledate既不是多数民众赞成由分组列,也不是聚合函数。 (简单地说:有多个发售日期,其中之一是应该给你的查询引擎)

+0

非常感谢!这完全符合我的想法。我错过了我们经历过的课,所以这是完美的! – blyter

+0

如果您错过了讲座,您可能还想阅读与“GROUP BY”密切相关的'HAVING'子句。 – duskwuff

0

我想你需要的东西是这样的:

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

CREATE TABLE IF NOT EXISTS salesbookcode INT(6)无符号NOT NULL, storecode INT(6)无符号NOT NULL, saledate日期NOT NULL, quantity INT(6)无符号NOT NULL, price小数

)默认的字符集= UTF8; INSERT INTO salesbookcodestorecodesaledatequantityprice)VALUES ( '1', '1', '2017年9月24日',3,5), ( '1', '1',' ('1','2','2017-09-24',10,5), ('1','2','2017-09-24',5,5), 24' ,10,10);

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

相关问题