订阅更新

产品销售分析一:取每笔销售的产品名

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

LeetCode 1068 · JOIN 维表

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

面试怎么回答

销售表 JOIN 产品表按 product_id 取名称即可。我会根据业务决定用 INNER 还是 LEFT JOIN:要保证每笔销售都出现,就以销售表为左表做 LEFT JOIN。

先把这段讲顺;面试官追问时,再展开下面的原理和细节。

详细讲解

题意

销售表记录每笔销售的产品 ID、年份、数量和单价,产品表记录产品名称。输出每笔销售对应的产品名称、年份和单价。

表结构

  • Sales:sale_id、product_id、year、quantity、price;(sale_id, year) 为主键
  • Product:product_id(主键)、product_name

思路

以销售表为主,关联产品表取名称。题目保证销售里的产品都存在,INNER JOIN 和 LEFT JOIN 结果一样;业务上如果担心产品被删,用 LEFT JOIN 可以保留销售记录。

参考解法

select product_name,year,price
from Sales s left join Product p
on s.product_id  = p.product_id

易错点

  • 反过来以产品表为主 LEFT JOIN 销售表,会多出没有销售记录的产品(年份和价格为空)。
刷题进度保存在当前浏览器