2017-09-23 83 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);

選擇商店代碼,總額(數量*價格)作爲銷售組的商店代碼收入

相關問題