产品销售分析二:每个产品卖了多少件
LeetCode 1069 · 分组求和、不必要的关联
面试怎么回答
需要的字段都在销售表里,直接 GROUP BY product_id 求 SUM(quantity),不需要关联产品表。面试时能主动指出多余的 JOIN,会显得对执行成本有意识。
先把这段讲顺;面试官追问时,再展开下面的原理和细节。
详细讲解
题意
同一张销售表,统计每个产品 ID 的销售总件数。
表结构
- Sales:sale_id、product_id、year、quantity、price
- Product:product_id(主键)、product_name
思路
只需要产品 ID 和数量,都在销售表里,直接按 product_id 分组 SUM(quantity)。原解法多关联了一次产品表,结果一样但多了开销。
参考解法
select s.product_id,sum(quantity) total_quantity
from Sales s left join Product p
on s.product_id = p.product_id
group by s.product_id
另一种写法:不需要关联产品表
SELECT product_id, SUM(quantity) AS total_quantity
FROM Sales
GROUP BY product_id
易错点
- 写 SQL 前先确认需要的字段都在哪张表里,能不关联就不关联。