当前位置: 首页 > 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.dtcms.com/a/295592.html

相关文章:

  • 重构数据库未来:金仓数据库,抢占 AI 原生时代先机
  • 数据结构系列之红黑树
  • 亚马逊云科技:以云为翼,助你翱翔数字新天空
  • pycharm配conda环境
  • 2025年PostgreSQL 详细安装教程(windows)
  • Pycharm、Python安装及配置小白教程
  • 智能制造场景195个术语的16个分类
  • 模块化商城的快速部署之道:ZKmall开源商城如何让电商功能即插即用
  • Unity VS Unreal Engine ,“电影像游戏的时代” 新手如何抉择引擎?(1)
  • Java设计模式-适配器模式
  • vue 中什么场景使用 export default 和setup()
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现卫星图像识别(C#代码,UI界面版)
  • [数据结构]#6 树
  • Apache Commons:Java开发者的瑞士军刀
  • 【C++】使用箱线图算法剔除数据样本中的异常值
  • n8n AI资讯聚合与分发自动化教程:从数据获取到微信与Notion集成
  • 环特生物荣获“广西科学技术进步二等奖”
  • C++ 协程
  • 移动端自动化Appium框架
  • Linux服务器安全自动化审计实战:一键扫描账户/网络/进程/计划任务风险(附开源脚本)
  • rna_seq_pipeline.py-python002
  • 同步时钟系统提升仓库自动化水平
  • 服务器启动日志等级
  • 锁定锁存器 | 原理 / 应用 / 时序
  • 无广告终端安全产品推荐:打造纯净办公环境的安全之选
  • 【Spring Cloud Gateway 实战系列】终极篇:演进方向与未来架构
  • Gitea——私有git服务器搭建教程
  • AWS云S3+Glue+EMRonEC2+ReadShift
  • RK3568笔记九十一:QT环境搭建
  • 2025创新杯(钉钉杯)数学建模 AB赛题已出