MySQL使用GROUP BY和SUM查询products表产品总价、名称及ID的问题求助
问题排查
你当前编写的SQL存在两个核心错误:
- 误用
count(*)统计函数重命名为Name_product,count(*)返回的是分组后的行数统计结果,不是你要的产品名称字段值 - 不需要使用
GROUP BY子句:你的需求是返回每一条产品的ID、名称、对应总价,属于逐行计算返回,不需要分组聚合操作
正确SQL语句
如果你要的是每个产品对应的库存总价值(单产品总价=单价*库存),使用以下语句即可:
SELECT ID_products, Name_product, Price * Stock AS 产品总价 FROM products;
如果你需要额外返回所有产品加总的全局总价值,可以用窗口函数实现:
SELECT ID_products, Name_product, Price * Stock AS 单产品总价, SUM(Price * Stock) OVER() AS 所有产品总合计 FROM products;
补充说明
GROUP BY通常用于需要对数据按指定字段分组后做聚合统计的场景,比如统计每个供应商的产品总数、平均单价等,你当前的逐行查询需求不需要使用该子句。
内容的提问来源于stack exchange,提问作者GoodLucky
相关产品推荐
相关产品推荐

