SQL 刷题/【阿里巴巴】查询各品类价格前两名商品
上一题下一题中等通过率 67%

【阿里巴巴】查询各品类价格前两名商品

WHERE 条件子查询窗口函数ORDER BY排行榜面试真题

题目描述

来源:阿里巴巴 SQL 面试真题

某支付 App 维护了一张已去重的商品信息表。现在需要找出每种商品类型中价格排名前两名的商品。

数据表

product_info 商品信息表

字段类型说明
product_idVARCHAR商品 ID,主键
priceDECIMAL商品价格
typeVARCHAR商品品类
product_nameVARCHAR商品名称

排名口径

  • 在每个商品品类内,按商品价格降序计算排名。
  • 价格相同的商品排名相同。
  • 保留品类内价格排名为第 1 名或第 2 名的全部商品。
  • 因为允许并列,同一品类可能返回超过两件商品。
  • 某品类不足两个价格名次时,返回该品类的全部商品。

题目要求

  • 输出商品 ID、商品名称、商品品类和商品价格。
  • 最终按商品价格降序排列。
  • 商品价格相同时,按商品名称升序排列。
  • 如前两项仍相同,按商品 ID 升序稳定排列。

期望输出列

列名说明
product_id商品 ID
product_name商品名称
type商品品类
price商品价格

数据样例

当前运行环境
product_idPKVARCHAR(32)priceDECIMAL(10, 2)typeVARCHAR(50)product_nameVARCHAR(100)
p100100shoesanta
p101200shoesli-ning
p10250shoeserke
p103500shoesnike
p5995000telephonehuawei
p6006000telephoneiphone13
p6012000telephonevivo
p6021500telephoneoppo
输入数据显示 8 / 12
SQL 编辑器正在保存草稿...
正在加载 SQL 编辑器...

运行你的 SQL 查询后,结果将显示在这里