You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LeetCode 1251平均售价问题:SQL代码仅通过15/17测试用例求助

问题原因及修正方案

你的代码只通过15/17测试用例的核心原因是:使用了INNER JOIN,漏掉了有价格记录但无销售记录的产品。题目要求返回所有存在价格记录的产品的平均售价,哪怕该产品从未卖出(此时平均售价应为0.00),但INNER JOIN会过滤掉这些在UnitsSold表中没有匹配项的产品。

修正后的代码

SELECT p.product_id, 
ROUND(COALESCE(SUM(price * units) / NULLIF(SUM(units), 0), 0), 2) AS average_price
FROM Prices p
LEFT JOIN UnitsSold u ON u.product_id = p.product_id
AND u.purchase_date BETWEEN p.start_date AND p.end_date
GROUP BY p.product_id;

关键修正点

  • 将JOIN(即INNER JOIN)替换为LEFT JOIN:确保Prices表中的所有产品都被保留,即使UnitsSold表中没有对应的销售记录
  • 其余逻辑保持不变:对于无销售记录的产品,SUM(price * units)和SUM(units)都会返回NULL,NULLIF(SUM(units), 0)仍为NULL,COALESCE会将整个表达式结果转为0,最终ROUND(0,2)得到0.00,符合题目要求

内容的提问来源于stack exchange,提问作者NotVS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 04:25:55