不确定如何提出这个问题。基本上我有一张桌子:
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,我想获得两者的收入,并将它们显示为该商店代码的总质量,而不是单独显示它们。我怎么能这样做?
答案 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 sales
(bookcode
,storecode
,saledate
,quantity
,price
)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);
按商店代码
选择商店代码,总和(数量*价格)作为销售组的收入