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

详解力扣高频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.xdnf.cn/news/16185.html

相关文章:

  • 星慈光编程虫2号小车讲解第二篇--向左向右平移
  • Python编程进阶知识之第五课处理数据(matplotlib)
  • Unity VS Unreal Engine ,“电影像游戏的时代” 新手如何抉择引擎?(结)
  • 100条SQL语句分类精讲:从基础到进阶的实操指南
  • 医疗系统国产化实录:SQL Server国产替代,乙方保命指南
  • 机器学习的基础知识
  • 洛谷 P1996 约瑟夫问题之题解
  • kafka的shell操作
  • 多源信息融合智能投资【“图神经网络+强化学习“的融合架构】【低配显卡正常运行】
  • MapStruct类型转换接口未自动注入到spring容器中
  • 快速将前端得依赖打为tar包(yarn.lock版本)并且推送至nexus私有依赖仓库(笔记)
  • 《C++》面向对象编程--类(下)
  • LLM中的位置嵌入矩阵(Position Embedding Matrix)是什么
  • matrix-breakout-2-morpheus靶机通关教程
  • DBA常用数据库查询语句
  • Python爬虫案例:Scrapy+XPath解析当当网网页结构
  • Lua(模块与包)
  • 【docker | 部署 】Jetson Orin与AMD平台容器化部署概述
  • Java 实现 B/S 架构详解:从基础到实战,彻底掌握浏览器/服务器编程
  • 前端性能新纪元:Rust + WebAssembly 如何在浏览器中实现10倍性能提升(以视频处理为例)
  • 【RAG优化】RAG应用中图文表格混合内容的终极检索与生成策略
  • VUE的学习
  • iOS WebView 加载失败与缓存刷新问题排查实战指南
  • 医疗行业新变革:AR 培训系统助力手术培训精准高效​
  • Oracle国产化替代:一线DBA的技术决策突围战
  • 华为OpenStack架构学习9篇 连载—— 01 OpenStack架构介绍【附全文阅读】
  • 【C++】使用箱线图算法剔除数据样本中的异常值
  • Vue 项目中的组件引用如何实现,依赖组件间的数据功能交互及示例演示
  • CIRL:因果启发的表征学习框架——从域泛化到奖励分解的因果革命
  • Spring MVC中常用注解_笔记