订阅更新

产品销售分析二:每个产品卖了多少件

SQL 实战 123 题 · 第 50 题 简单 约 2 分钟读完

LeetCode 1069 · 分组求和、不必要的关联

本文目录
  1. 面试怎么回答
  2. 题意
  3. 表结构
  4. 思路
  5. 参考解法
  6. 易错点

面试怎么回答

需要的字段都在销售表里,直接 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 前先确认需要的字段都在哪张表里,能不关联就不关联。
刷题进度保存在当前浏览器