小明需要处理某支付app会在客户端打印的日志。其中有product_info(product_id,price,type,product_name)分别代表product_id 商品id、price 商品价格、type 商品类型、product_name商品名称(表中数据已去重)。 product_info表如下: product_id price type product_name p100 100 shoes anta p101 200 shoes li-ning p102 50 shoes erke p103 500 shoes nike p599 5000 telephone huawei p600 6000 telephone iphone13 p601 2000 telephone vivo p602 1500 telephone oppo p603 5500 telephone iphone12 p604 3000 telephone xiaomi p605 1000 telephone zte p233 2 water wahaha 【问题】小明需要找出不同商品类型下商品价格排名前2的3个商品(价格相同的商品排名相同),最终以商品的价格逆序返回(返回时价格相同则以商品名称排序);返回四列:商品id、商品名称、商品品类、商品价格 【知识点】子查询、条件查询、窗口函数、条件查询、排名函数、排序函数 【示例结果】返回四列:商品id、商品名称、商品品类、商品价格 【示例解析】 选出商品价格排在前两名的两个商品,最后根据商品价格和商品名称再次排序得到前三个商品的返回字段 注: 无需考虑返回为空的异常处理
示例1
输入
DROP TABLE IF EXISTS `product_info`;
CREATE TABLE IF NOT EXISTS `product_info`(
product_id varchar(32) NOT NULL,
price int(32) DEFAULT 0,
type varchar(32) NOT NULL,
product_name varchar(255) NOT NULL,
UNIQUE uni_product(product_id)
);
INSERT IGNORE `product_info` VALUES
('p100',100,'shoes','anta'),
('p101',200,'shoes','li-ning'),
('p102',50,'shoes','erke'),
('p103',500,'shoes','nike'),
('p599',5000,'telephone','huawei'),
('p600',6000,'telephone','iphone13'),
('p601',2000,'telephone','vivo'),
('p602',1500,'telephone','oppo'),
('p603',5500,'telephone','iphone12'),
('p604',3000,'telephone','xiaomi'),
('p605',1000,'telephone','zte'),
('p233',2,'water','wahaha');
输出
p600|iphone13|telephone|6000
p603|iphone12|telephone|5500
p103|nike|shoes|500
加载中...