当前位置: 首页 > article >正文

力扣-Mysql-3293-计算产品最终价格(中等)

一、题目来源

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 升序排序。



五、分析


1.文字分析
 

第一步:将两表进行左连接,以product表为主表;

第二步:使用case when 根据折扣计算最终价格,结果按照product_id升序排列。

2.图解


六、代码实现

SELECT
    product_id,
    case
        when discount is not null then  round(price - price * discount / 100,2)
        when discount is null then round(price,2)
    end as final_price,
    p.category
from Products p
left join Discounts d on p.category = d.category
ORDER BY product_id;



七、总结
 

本题需求为计算产品最终价格,并没有很难思考的点。

只需要根据题目要求使用case when 条件判断 进行价格计算即可;

进行两表关联时要注意选择 Products表为主表,以及价格计算时要使用 round() 函数四舍五入保留两位小数。


http://www.kler.cn/a/396185.html

相关文章:

  • 系统架构设计师第二版口诀
  • nacos-operator在k8s集群上部署nacos-server2.4.3版本踩坑实录
  • python os.path.basename(获取路径中的文件名部分) 详解
  • H.265流媒体播放器EasyPlayer.js H.264/H.265播放器chrome无法访问更私有的地址是什么原因
  • 生成自签名证书并配置 HTTPS 使用自签名证书
  • 力扣 LeetCode 541. 反转字符串II(Day4:字符串)
  • CentOS中安装Webmin进行可视化管理linux
  • 从 Rust 官方文档理解 Ownership
  • 零基础Java第十八期:图书管理系统
  • 【学习】HTTP
  • 【前端】深入浅出的React.js详解
  • SpringCloud2023实战之接口服务测试工具SpringBootTest
  • ORB-SLAM2源码学习:ORBextractor.cc:ORBextractor::operator()主入口函数
  • 开源AI大模型工作流神器Flowise本地部署与远程访问
  • VMware高危漏洞VMSA-2024-0019修复堆溢出和权限提升漏洞
  • 最后一个单词的长度---每日小题
  • 【免越狱】iOS砸壳 可下载AppStore任意版本 旧版本IPA下载
  • Spring Boot框架:电商系统的技术革新
  • CSS Grid 布局实战:从入门到精通
  • 推理计算:GPT-o1 和 AI 治理
  • 一文说清C++类型转换操作符(cast operator)
  • datawhale11月组队学习 模型压缩技术2:PyTorch模型剪枝教程
  • 多路转接之poll
  • SpringBoot整合Minio
  • 第二十章 TCP 客户端 服务器通信 - 立即发送模式(Q 模式)
  • react的import 导入语句中的特殊符号