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

如何从product表中查询销量最低的前三款产品?

如何修改SQL获取销量最低的前三款产品?

首先先明确我们的基础数据:现有product表的结构和数据如下:

proID Proname sellprice qty_istock qty_outstock remark
001 fish 20,000 5 20 Paid
002 tofu 5,000 2 32 paid
003 desert 10,000 10 50 paid
004 Salad 30,000 9 5 paid
005 wisky 12,000 100 2 paid
006 sprite 5,000 200 40 paid

原来的SQL逻辑是用DENSE_RANK()按销量降序排名,以此获取销量最高的前三款产品:

SELECT * FROM (
 SELECT *, DENSE_RANK() OVER (ORDER BY qty_outstock DESC) dr FROM product
) t WHERE dr <= 3;

现在要获取销量最低的前三产品,并且只返回PID(对应原表的proID)和qty_outstock两列,只需要做两处关键调整:

  1. 把排名的排序方向从降序(DESC)改成升序(ASC),让销量最低的产品排在最前面,排名从1开始计数。
  2. 外层查询只选择需要的列,同时给proID起别名PID,匹配你想要的输出格式。

修改后的最终SQL如下:

SELECT proID AS PID, qty_outstock FROM (
 SELECT *, DENSE_RANK() OVER (ORDER BY qty_outstock ASC) dr FROM product
) t WHERE dr <= 3;

执行这段SQL后,就能得到你预期的结果:

PID qty_outstock
005 2
004 5
001 20

这里保留DENSE_RANK()的原因是,如果存在多个产品销量相同且属于前三范围的情况,它们会被赋予相同的排名,不会被遗漏(比如若有两款产品销量都是2,都会被包含在结果中)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:08:39