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

详解力扣高频SQL50题之197. 上升的温度【简单】

传送门:197. 上升的温度

题目

表: Weather

±--------------±--------+
| Column Name | Type |
±--------------±--------+
| id | int |
| recordDate | date |
| temperature | int |
±--------------±--------+
id 是该表具有唯一值的列。
没有具有相同 recordDate 的不同行。
该表包含特定日期的温度信息

编写解决方案,找出与之前(昨天的)日期相比温度更高的所有日期的 id 。

返回结果 无顺序要求 。

结果格式如下例子所示。

示例 1:

输入:
Weather 表:
±—±-----------±------------+
| id | recordDate | Temperature |
±—±-----------±------------+
| 1 | 2015-01-01 | 10 |
| 2 | 2015-01-02 | 25 |
| 3 | 2015-01-03 | 20 |
| 4 | 2015-01-04 | 30 |
±—±-----------±------------+
输出:
±—+
| id |
±—+
| 2 |
| 4 |
±—+
解释:
2015-01-02 的温度比前一天高(10 -> 25)
2015-01-04 的温度比前一天高(20 -> 30)

解析

本题不难,但是有坑点:如果日期是连续的,那么用位移开窗函数lead()或lag()是方便的,但是这题没有说日期是连续的,所以用开窗函数不一定能通过。事实上,涉及同一列的值相互比较,要想到用自连接,这样就可以保证同一行的日期在另一张表中相差一天,即on 表1.date=表2.date-1,这样两张表就分为今天表和昨天表,那么只需判断今天表的温度是否大于昨天表即可,最后注意返回今天表的id。

算法(标准SQL)

自连接天气表,令表1的日期-1=表2的日期,这样表1就成为今天表,表2就成为昨天表,再判断表1的温度是否大于昨天表,最后返回表1的id即可。

代码(标准SQL)

select w1.id as id
from Weather w1
join Weather w2
on w1.recordDate-1=w2.recordDate
where w1.Temperature>w2.Temperature;
http://www.lryc.cn/news/598306.html

相关文章:

  • 【MySQL】MySQL 事务和锁详解
  • Redis--哨兵机制详解
  • day20 双向链表
  • 适配器模式——以springboot为例
  • RK3568笔记九十一:QT环境搭建
  • 【Java基础06】ArrayList
  • AudioLLM 开源项目了解学习
  • 构建企业级Docker日志驱动:将容器日志无缝发送到腾讯云CLS
  • 新mac电脑软件安装指南(前端开发用)
  • 2025年计算机网络与教育科学国际会议(ICCNES 2025)
  • IntelliJ IDEA中管理多版本Git子模块的完整指南
  • Elasticsearch安全审计日志设置与最佳实践
  • 从零构建:Jenkins与Kubernetes集成的完整指南
  • 福佑储能轴流风扇对储能安全的重要影响
  • 陪诊小程序系统开发:开启医疗陪护新时代
  • JAVA图文短视频交友+自营商城系统源码支持小程序+Android+IOS+H5
  • 盲盒抽谷机小程序:二次元经济的“社交裂变引擎”如何引爆用户增长?
  • Apache 消息队列分布式架构与原理
  • 移动端自动化Appium框架
  • [数据结构]#7 哈希表
  • 2025年6月GESP(C++六级):学习小组
  • OpenMed 项目深度分析:推动医疗 NLP 领域的开源革命
  • GoLand 项目从 0 到 1:第二天 —— 数据库自动化
  • 综合实验(4)
  • 独家|百度副总裁尚国斌即将离职,此前统筹百度地图;行业搜索及智能体业务总经理谢天转岗IDG
  • Vue-23-通过flask接口提供的数据使用plotly.js绘图(二)
  • Unity 多人游戏框架学习系列九
  • 图机器学习(19)——金融数据分析
  • 2026第35届中国国际健康产业博览会:探寻大健康时代的未来!
  • KTH5791——3D 霍尔位置传感器--鼠标滚轮专用芯片