【SQL】平均售价

news2025/1/13 10:29:08

目录

题目

分析

代码


题目

表:Prices

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

表:UnitsSold

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| product_id    | int     |
| purchase_date | date    |
| units         | int     |
+---------------+---------+
该表可能包含重复数据。
该表的每一行表示的是每种产品的出售日期,数量和产品 id。

编写解决方案以查找每种产品的平均售价。average_price 应该 四舍五入到小数点后两位

返回结果表 无顺序要求 。

结果格式如下例所示。

示例 1:

输入:
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    |
+------------+---------------+-------+
输出:
+------------+---------------+
| 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

分析

产品价格表和出售时间表

左连接,from Prices p left join UnitsSold u on p.product_id = u.product_id

价格对应时间段,出售日期对应时间点

使用between找到对应价格,where u.purchase_date between p.start_date and p.end_date

考虑产品尚未出售

或关系,or u.product_id is null

查找每种产品的平均售价

按照产品分组,group by p.product_id

平均售价,sum(units*price)/sum(units

存在null情况,ifnull(,0)

average_price 应该 四舍五入到小数点后两位

round函数,round(ifnull(sum(units*price)/sum(units),0),2)

代码

select p.product_id, round(ifnull(sum(units*price)/sum(units),0),2) average_price
from Prices p left join UnitsSold u
on p.product_id = u.product_id
where u.purchase_date between p.start_date and p.end_date or u.product_id is null
group by p.product_id

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2036772.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

技术研究:Redis 数据结构与 I/O 模型

数据结构 Redis之所以“快”,一方面因为它是内存数据库,所有操作都在内存上完成,内存的访问速度本来就快。另一方面则是因为高效的数据结构,使得操作键值效率较高。总体来说,Redis使用了一个用来保存每个Key/Value的全…

【Story】如何高效记录并整理编程学习笔记?

目录 一、为何笔记在编程学习中如此重要?1.1 知识的捕捉1.2 理解和消化1.3 知识的复习1.4 知识的分享 二、建立高效的笔记系统2.1 确定笔记的目标2.2 选择合适的工具2.3 笔记的结构化2.4 记录有效的内容2.5 定期回顾和更新 三、保持笔记条理性的技巧3.1 使用一致的格…

【数据结构】堆排序与TOP-K问题

🌈个人主页:Yui_ 🌈Linux专栏:Linux 🌈C语言笔记专栏:C语言笔记 🌈数据结构专栏:数据结构 文章目录 1.堆排序1.1 建堆1.2 利用堆删除思想来进行排序1.3 堆排序的时间复杂度 2.TOP-K问…

Uniapp之微信小程序计算器

UI仿的iOS手机计算器,基本功能已经实现,如下效果图 具体使用可以参考微信小程序:日常记一记--我的---计算器 第一步:UI界面设计 1,strClass模块是计算过程代码展示 2,result-view模块是结果展示 3&#xff…

嵌入式学习---DAY24:进程--二

一、exec函数族----启动一个新程序 用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支), 子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时,该进程的 用户空间代码和数据完全被…

SHT30温湿度传感器全解析——概况,性能,MCU连接,样例代码

常见温湿度传感器测量范围:(价格仅供参考,具体性能要看折线图) 型号DHT11DHT20AHT10AHT20AHT30SHT20价格¥ 2.49¥3.04¥ 1.9¥1.4¥ 1.3¥5.5温度测量范围20—90%RH0—100%RH0—100%RH0—…

pycharm最新专业版激活码

pycharm最新专业版激活码 Pycharm下载地址:pycharm下载 首先,我们打开下载的 pycharm 专业版并安装。 按照下图所示先点击上方的 Activation code,再将激活码粘贴至输入框,最后点击 Activate 激活。 激活码: OS2AN…

旋转关系介绍

目录 旋转矩阵与轴角 旋转矩阵与欧拉角 旋转矩阵与四元数 轴角与四元数 轴角与欧拉角 欧拉角与四元数 欧拉角与四元数 旋转矩阵与轴角 设旋转矩阵R[■8(r_11&r_12&r_13r_21&r_22&r_23r_31&r_32&r_33)],轴角使用一个单位向量n和一个角…

Go--GMP调度模型

目录 GMP模型G、M、P简介P和M的个数**P和M何时会被创建**goroutine创建流程goroutine什么时候会被挂起 GMP的调度调度流程调度策略调度时机同时启动了一万个goroutine,会如何调度? GMP模型 G、M、P简介 GMP是Go运行时调度层面的实现,包含4个…

质量对中国开发商提升游戏品牌信誉和信任度的影响

随着全球游戏产业的持续增长,中国开发商正在大举进军国际市场。然而,他们面临的关键挑战之一是建立和维护与全球参与者的品牌信誉和信任。他们的游戏质量在实现这一目标方面起着至关重要的作用。从技术性能到故事讲述和本地化,高质量的游戏对…

OpenGL3.3_C++_Windows(35)

PBR_IBL漫反射 IBL图像的光照(Image based lighting):非直接光源,它是一种更精确的环境光照输入格式,甚至也可以说是一种全局光照的粗略近似。环境光照:获取每个wi光源辐射率,求辐照度:将周围环…

Linux学习笔记11(计算机网络)

目录 网络七层模型/五层模型 IP地址分类 CIDR Centos7的网卡IP配置 RockyLinux9的网卡IP配置 网络七层模型/五层模型 自下到上 物理层: 建立物理连接,传输 0 和 1 的比特流 数据链路层: 物理地址寻址,流量控制,差错…

基于vue框架的SSM基于B_S的毕业设计题目管理系统的设计与实现ij0q7(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:学生,教师,毕设题目,毕设选题,毕设任务书,开题报告,中期检查,毕业论文,论文成绩,答辩成绩,答辩通知,班级 开题报告内容 基于Vue框架的SSM(SpringSpring MVCMyBatis)的毕业设计题目管理系统设计与实现 开题报告…

刷题记录第109天-K个一组反转链表

解题思路: 第一步:实现一个数组,给定一段链表的头结点和尾节点,反转该链表,并返回新的头结点和尾结点。 第二步:初始化一个虚拟头结点,用于记录最终头结点和规范操作。 第三步:给定一…

​产品经理-​你如何理解“互联网思维(35)

在产品规划和功能改版中,确实非常重视用户需求和体验。产品需求是互联网产品的核心 用户体验是互联网产品的重点。在互联网新产品规划中,会非常重视用户验证环节 确保做出来的东西确实是用户想要的;而在已经上线的产品中,往往会有…

Raspberry Pi Pico 家族的进化 —— RP2040、RP2350与RP2354性能比较

随着树莓派Pico系列的不断扩展,其背后的芯片也得到了升级和改进。从最初的RP2040到最新的RP2354,每一次迭代都带来了新的功能和性能提升。本文将详细对比RP2040、RP2350和RP2354三款芯片的关键特性,帮助开发者了解它们的差异,并选…

Windows File Recovery卡在99%怎么解决?实用指南!

为什么会出现“Windows File Recovery卡在99%”的问题? Windows File Recovery(Windows文件恢复)是微软设计的命令行应用程序。它可以帮助用户从健康/损坏/格式化的存储设备中恢复已删除/丢失的文件。 通过输入相关命令,设置源/…

【轨物推荐】技术创新的演进逻辑

注:本文节选自郭朝晖老师的《知行-工业基因的数字化演进》 推进数字化技术的过程本质上是一种技术创新。理解创新的逻辑,有利于推进数字化技术。 科技工作的价值往往短期被高估,长期被低估。短期被高估,是因为忽视了技术应用过程…

LSPosed模块开发第一篇

安装LSPosed 设备pixel 3a Android 12 Magisk root 环境 LSPosed地址: https://github.com/LSPosed/LSPosed 下载zygisk的,riru没效果 https://github.com/LSPosed/LSPosed/releases 下载完push 到手机,Magisk 安装模块 Magisk设置里面的Z…

【人工智能】【机器学习】- 好书推荐之《深度学习调参指南》

目录 目标读者 核心内容 特色 结构 《深度学习调参指南》是一份由Google和哈佛大学的研究人员与工程师共同编写的实战手册,旨在帮助读者系统性地优化深度学习模型的性能。该指南强调了在深度学习实践中遇到的实际问题和解决方案,尤其关注超参数调优的…