gpt4 book ai didi

带分组的 SQL 查询

转载 作者:行者123 更新时间:2023-12-04 23:46:19 25 4
gpt4 key购买 nike

我在解决以下任务时遇到了问题:

'显示每个卖家在 2013 年通过销售产品 PS4 赚了多少钱(数量 * product_price)'

关系是:

seller(id , seller_name, advertised_by);
product( id, product_name, product_price);
sale(id, seller_id, product_id, quantity, date);

我插入了以下数据:

INSERT into seller VALUES
(1,'Bob',NULL),
(2,'Mary',1),
(3,'Peter',1),
(4,'Parker',1),
(5,'Jeff',1);

INSERT INTO product VALUES
(1,'PS4',100),
(2,'XBOX One',300),
(3,'Laptop',500);

INSERT INTO sale VALUES
(1,1,1,1,'4 5 2013'),
(2,2,1,2,'5 6 2013'),
(3,3,1,3,'6 6 2013'),
(4,4,1,4,'6 6 2013');

我知道不使用外键或对日期使用 varchar 不好,但我希望示例简单一些。

SELECT seller.id,seller.seller_name, (sale.quantity * product.price) AS sale
FROM seller,product,sale
WHERE product.id = sale.product_id
AND product.product_name = 'PS4'
AND sale.date like '%2013'
GROUP by seller.id;

我知道我必须使用 GROUP BY,但按 seller.id 分组不起作用。

最佳答案

您需要按未聚合的每一列进行分组,并对其他列应用聚合函数。在这里,您需要将 sellar_name 添加到 group by 子句(这不应该更改分组,因为 id 已经是唯一的),并且 sum 销售额。

此外,作为旁注,使用隐式连接(在 from 子句中有多个表)已被弃用多年,建议您使用显式 join 改为:

SELECT   seller.id,seller.seller_name, SUM(sale.quantity * product.price) AS sale
FROM seller
JOIN sale ON sale.seller_id = seller.id
JOIN product ON product.id = sale.product_id
WHERE product.product_name = 'PS4' AND sale.date like '%2013'
GROUP BY seller.id;

关于带分组的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49464029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com