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

【leetcode-mysql】1251. 平均售价

题目:

Table: Prices

±--------------±--------+
| Column Name | Type |
±--------------±--------+
| product_id | int |
| start_date | date |
| end_date | date |
| price | int |
±--------------±--------+
(product_id,start_date,end_date) 是 Prices 表的主键。
Prices 表的每一行表示的是某个产品在一段时期内的价格。
每个产品的对应时间段是不会重叠的,这也意味着同一个产品的价格时段不会出现交叉。

Table: UnitsSold

±--------------±--------+
| Column Name | Type |
±--------------±--------+
| product_id | int |
| purchase_date | date |
| units | int |
±--------------±--------+
UnitsSold 表没有主键,它可能包含重复项。
UnitsSold 表的每一行表示的是每种产品的出售日期,单位和产品 id。

编写SQL查询以查找每种产品的平均售价。
average_price 应该四舍五入到小数点后两位。
查询结果格式如下例所示:

Prices table:
±-----------±-----------±-----------±-------+
| product_id | start_date | end_date | price |
±-----------±-----------±-----------±-------+
| 1 | 2019-02-17 | 2019-02-28 | 5 |
| 1 | 2019-03-01 | 2019-03-22 | 20 |
| 2 | 2019-02-01 | 2019-02-20 | 15 |
| 2 | 2019-02-21 | 2019-03-31 | 30 |
±-----------±-----------±-----------±-------+

UnitsSold table:
±-----------±--------------±------+
| product_id | purchase_date | units |
±-----------±--------------±------+
| 1 | 2019-02-25 | 100 |
| 1 | 2019-03-01 | 15 |
| 2 | 2019-02-10 | 200 |
| 2 | 2019-03-22 | 30 |
±-----------±--------------±------+

Result table:
±-----------±--------------+
| product_id | average_price |
±-----------±--------------+
| 1 | 6.96 |
| 2 | 16.96 |
±-----------±--------------+
平均售价 = 产品总价 / 销售的产品数量。
产品 1 的平均售价 = ((100 * 5)+(15 * 20) )/ 115 = 6.96
产品 2 的平均售价 = ((200 * 15)+(30 * 30) )/ 230 = 16.96

mysql:

SELECTproduct_id,Round(SUM(sales) / SUM(units), 2) AS average_price
FROM (SELECTPrices.product_id AS product_id,Prices.price * UnitsSold.units AS sales,UnitsSold.units AS unitsFROM Prices JOIN UnitsSold ON Prices.product_id = UnitsSold.product_idWHERE UnitsSold.purchase_date BETWEEN Prices.start_date AND Prices.end_date
) T
GROUP BY product_id
http://www.lryc.cn/news/91898.html

相关文章:

  • Razor代码复用
  • PRL:上海交大张文涛团队实现量子材料相关突破
  • impala中group_concat()函数无法对内容进行order by
  • MySQL 数据库全局变量中文解释
  • 设计模式之~状态模式
  • 【21JavaScript break 和 continue 语句】JavaScript中的break和continue语句:控制循环流程的关键技巧
  • 【SpringBoot】 设置随机数据 用于测试用例
  • chatgpt赋能python:Python如何获取微信聊天记录
  • VP记录:Codeforces Round 599 (Div. 2) A~D
  • 01-项目介绍
  • 《Python编程从入门到实践》学习笔记06字典
  • 为什么说程序员和产品经理一定要学一学PMP
  • LearnOpenGL-高级OpenGL-9.几何着色器
  • 8.视图和用户管理
  • bootstrapvue上传文件并存储到服务器指定路径及从服务器某路径下载文件
  • Qt OpenGL(四十二)——Qt OpenGL 核心模式-GLSL(二)
  • C++基础讲解第八期(智能指针、函数模板、类模板)
  • JMeter 测试 ActiveMq
  • 2023年4月和5月随笔
  • 新Linux服务器安装Java环境[JDK、Tomcat、MySQL、Nacos、Redis、Nginx]
  • 精简总结:一文说明软件测试基础概念
  • 通过 Gorilla 入门机器学习
  • 【二叉树】298. 二叉树最长连续序列
  • Matlab论文插图绘制模板第100期—紧凑排列多子图(Tiledlayout)
  • [2.0快速体验]Apache Doris 2.0 日志分析快速体验
  • MySQL学习-数据库创建-数据库增删改查语句-事务-索引
  • 浏览器渗透攻击-渗透测试模拟环境(9)
  • MySQL数据库基础(基础命令详解)
  • 企业培训直播场景下嘉宾连线到底是如何实现的?
  • 五、JSP05 分页查询及文件上传