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

SQL-每日一题【1164. 指定日期的产品价格】

题目

产品数据表: Products

写一段 SQL来查找在 2019-08-16 时全部产品的价格,假设所有产品在修改前的价格都是 10 。

以 任意顺序 返回结果表。

查询结果格式如下例所示。

示例 1:

 

 

解题思路

1.题目要求我们查找在 2019-08-16 时全部产品的价格,假设所有产品在修改前的价格都是 10 。我们可以分成2部分来进行查询。

2.把第一次change_date在2019-08-16之后的单独分出来,这部分的price肯定是10,因为初始值是10。我们先将记录按照 product_id 进行分组,然后找出每一组中最小的 change_date 都小于2019-08-16的记录,它们的price就为10。

3.剩下的作为另外一部分, 另外一部分中,选出在2019-08-16之前最大的那天的price作为最终price。首先将记录按 product_id进行分组,然后找出每一组中最大的change_date <= 2019-08-16的记录,它们的price就为 new_price ,最后两部分做union即可。

代码实现

(select product_id , 10 as price
from Products
group by product_id
having min(change_date)>'2019-08-16')
union
(select product_id, new_price as price
from Products
where(product_id, change_date) in(select product_id, max(change_date) as change_datefrom Productswhere change_date <= '2019-08-16'group by product_id))

 

测试结果

http://www.lryc.cn/news/112296.html

相关文章:

  • memcpy、memmove、memcmp、memset函数的作用与区别
  • socket 到底是个啥
  • 奥威BI—数字化转型首选,以数据驱动企业发展
  • vue中swiper使用
  • webpack与vite区别
  • GLSL用于图像处理
  • 即将发布的 Kibana 版本可运行 Node.js 18
  • 基于遗传算法改进的支持向量机多分类仿真,基于GA-SVM的多分类预测,支持相机的详细原理
  • MySQL5.7源码编译Debug版本
  • ORA-48913: Writing into trace file failed, file size limit [50000000] reached
  • 线上Zookeeper问题解决记录
  • Docker极速安装Jenkins
  • TransnormerLLM 中 FlashLinearAttention 的纯pytorch实现
  • 从NPM注册中心获取包
  • Elastic的下载
  • day52-Redis
  • 高效处理矢量大数据的高可用解决方案
  • Docker Compose构建lnmp
  • Flutter开发问题记录
  • 如何使用本地mock数据
  • XXL-JOB定时任务框架(Oracle定制版)
  • SpringBoot + ajax 实现分页和增删查改
  • ProxyGenerator-代理类生成器
  • ARM 内存屏障指令
  • 了解Linux 的 mmap --- 笔记
  • docker删除容器(步骤详解)
  • boost beast http server 测试
  • Android 10.0 系统开启禁用adb push和adb pull传输文件功能
  • 浙大数据结构第七周之07-图4 哈利·波特的考试
  • vue2-vue项目中你是如何解决跨域的?