首页 > 数据库 >力扣-Mysql-3293-计算产品最终价格(中等)

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

时间:2024-11-15 16:16:02浏览次数:3  
标签:category product 折扣 price 力扣 Mysql id +------------+---------+ 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() 函数四舍五入保留两位小数。

标签:category,product,折扣,price,力扣,Mysql,id,+------------+---------+,3293
From: https://blog.csdn.net/Jotcy/article/details/143802070

相关文章

  • 通过情况数据目录初始化MySQL数据库
    第一步:cd/etc/my.cnf打开配置文件,查看当前数据库的数据目录datadir打开datadir路径,备份所有文件到另外的目录然后删除所有rm -rf*初始化数据库mysqld--defaults-file=/etc/my.cnf--initialize-insecure然后datadir路径下会产生新的数据文件,给所有文件,包括文件夹下面......
  • MySQL 8 复制性能的增强
     新的复制时间戳MySQL主从复制环境,最常见的任务是确保复制确实在进行,而且主从之间没有发生错误。常用的命令是showslavestatus,该命令提供了从库线程的状态信息。因此,通常需要每个从库上执行showslavestatus并检查输出结果。 输出内容中,有个参数指标"Seconds_Behind_M......
  • mysql使用KILL命令来终止特定的查询进程
    在MySQL中,有时可能需要终止一个正在运行的查询进程,特别是当该进程占用了过多的资源或由于某种原因卡住了。可以使用KILL命令来终止特定的查询进程。以下是具体的步骤和注意事项:1.查看活动进程找到想要终止的进程ID。可以使用以下查询来查看当前所有的MySQL活动进程:SH......
  • 力扣-Mysql-3308- 寻找表现最佳的司机(中等)
    一、题目来源3308.寻找表现最佳的司机-力扣(LeetCode)二、数据表结构表:Drivers+--------------+---------+|ColumnName|Type|+--------------+---------+|driver_id|int||name|varchar||age|int||experience......
  • mysql基础函数
    函数是一段可以直接调用的程序字符串函数|CONCAT(S1,S2,S3)|字符串拼接将s1,s2s3拼接成一个字符串||LOWER(str)|将字符串str全部转为小写||UPPER(str)|将字符串str全部转为大写||LPAD(str,n,pad)|左填充,用字符串Pad对str的左边......
  • 【原创】java+ssm+mysql物流信息网系统设计与实现
    个人主页:程序猿小小杨个人简介:从事开发多年,Java、Php、Python、前端开发均有涉猎博客内容:Java项目实战、项目演示、技术分享文末有作者名片,希望和大家一起共同进步,你只管努力,剩下的交给天意。前言:随着全球经济一体化的不断推进,物流业作为支撑企业运营的重要环节,其管理和......
  • 【原创】java+ssm+mysql商品库存管理系统(进销存)设计与实现
    个人主页:程序猿小小杨个人简介:从事开发多年,Java、Php、Python、前端开发均有涉猎博客内容:Java项目实战、项目演示、技术分享文末有作者名片,希望和大家一起共同进步,你只管努力,剩下的交给天意。前言:随着市场竞争的日益激烈,企业面临着巨大的竞争压力。为了在市场中立于不败......
  • linux安装mysql
    1.linux在线安装mysql这里直接在线安装即可yuminstallmysql-server要是有网络,在线安装最为便捷,省去自己手动下包的麻烦2.启动mysqlsystemctlstartmysqld#启动mysql服务systemctlenablemysqld#设置开机自启动3.修改mysql密码初始密码需及时修改这里......
  • 基于Java+SpringBoot+Mysql在线课程学习教育系统功能设计与实现九
    一、前言介绍:免费获取:猿来入此1.1项目摘要随着信息技术的飞速发展和互联网的普及,教育领域正经历着深刻的变革。传统的面对面教学模式逐渐受到挑战,而在线课程学习教育系统作为一种新兴的教育形式,正逐渐受到广泛关注和应用。在线课程学习教育系统的出现,不仅为学生提供了更加灵......
  • 基于Java+SpringBoot+Mysql在线课程学习教育系统功能设计与实现十
    一、前言介绍:免费获取:猿来入此1.1项目摘要随着信息技术的飞速发展和互联网的普及,教育领域正经历着深刻的变革。传统的面对面教学模式逐渐受到挑战,而在线课程学习教育系统作为一种新兴的教育形式,正逐渐受到广泛关注和应用。在线课程学习教育系统的出现,不仅为学生提供了更加灵......