力扣题目跳转(3293. 计算产品最终价格 - 力扣(LeetCode))
表:
Products
+------------+---------+ | Column Name| Type | +------------+---------+ | product_id | int | | category | varchar | | price | decimal | +------------+---------+ product_id 是这张表的唯一主键。 每一行包含产品的 ID,分类以及价格。表:
Discounts
+------------+---------+ | Column Name| Type | +------------+---------+ | category | varchar | | discount | int | +------------+---------+ category 是这张表的主键。 每一行包含有一个产品分类和该分类的折扣百分比(值的范围从 0 到 100)。
题目要求:
编写一个解决方案来找到每个产品使用 分类折扣 后的 最终价格。如果一个产品分类 没有关联的折扣,它的价格保持 不变。
返回结果表以 product_id
升序 排序。
结果格式如下所示。
示例:
输入:
Products
表:+------------+-------------+-------+ | product_id | category | price | +------------+-------------+-------+ | 1 | Electronics | 1000 | | 2 | Clothing | 50 | | 3 | Electronics | 1200 | | 4 | Home | 500 | +------------+-------------+-------+
Discounts
表:+------------+----------+ | category | discount | +------------+----------+ | Electronics| 10 | | Clothing | 20 | +------------+----------+输出:
+------------+------------+-------------+ | product_id | final_price| category | +------------+------------+-------------+ | 1 | 900 | Electronics | | 2 | 40 | Clothing | | 3 | 1080 | Electronics | | 4 | 500 | Home | +------------+------------+-------------+解释:
- 对于产品 1,它属于电器分类,有 10% 的折扣,所以最终价格为 1000 - (10% of 1000) = 900。
- 对于产品 2,它属于衣物分类,有 20% 的折扣,所以最终价格为 50 - (20% of 50) = 40。
- 对于产品 3,它属于电器分类,有 10% 的折扣,所以最终价格为 1200 - (10% of 1200) = 1080。
- 对于产品 4,它属于家具分类,没有可用的折扣,所以最终价格仍是 500。
结果表以 product_id 升序排序。
case 1 的建表语句。
Create table if not exists Products (product_id int, category varchar(50), price int)
Create table if not exists Discounts(category varchar(50), discount int)
Truncate table Products
insert into Products (product_id, category, price) values ('1', 'Electronics', '1000')
insert into Products (product_id, category, price) values ('2', 'Clothing', '50')
insert into Products (product_id, category, price) values ('3', 'Electronics', '1200')
insert into Products (product_id, category, price) values ('4', 'Home', '500')
Truncate table Discounts
insert into Discounts (category, discount) values ('Electronics', '10')
insert into Discounts (category, discount) values ('Clothing', '20')
一 很简单的一道题,直接将两者表进行连接。主表为 Products。
select * from products p left join discounts d on p.category = d.category
输出如下
二 然后对数据进行计算即可,记得排序。
select product_id, round((price * (100-ifnull(discount,0)))/100,2) as final_price, p.category from products p left join discounts d on p.category = d.category order by product_id;
输出如下
以上就是全部答案,如果对你有帮助请点个赞,谢谢。
来源:力扣(leecode)
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
转载请注明出处:
我会尽快把力扣上的所有数据库题目发出来。感兴趣的可以点个赞与关注。每天不定时跟新。
标签:category,product,最终,price,Products,计算,Electronics,id,3293 From: https://blog.csdn.net/CYJ1844/article/details/144088854