声明:

今天是第50道题。给定一个 Weather 表,编写一个 SQL 查询,来查找与之前(昨天的)日期相比温度更高的所有日期的 Id。以下所有代码经过楼主验证都能在LeetCode上执行成功,代码也是借鉴别人的,在文末会附上参考的博客链接,如果侵犯了博主的相关权益,请联系我删除

(手动比心ღ( ´・ᴗ・` ))

正文

题目:给定一个 Weather 表,编写一个 SQL 查询,来查找与之前(昨天的)日期相比温度更高的所有日期的 Id。

+---------+------------------+------------------+
| Id(INT) | RecordDate(DATE) | Temperature(INT) |
+---------+------------------+------------------+
|       1 |       2015-01-01 |               10 |
|       2 |       2015-01-02 |               25 |
|       3 |       2015-01-03 |               20 |
|       4 |       2015-01-04 |               30 |
+---------+------------------+------------------+

例如,根据上述给定的 Weather 表格,返回如下 Id:

+----+
| Id |
+----+
|  2 |
|  4 |
+----+

解法1。两表直接关联,用where筛选日期差1天,温度更高的样本Id,还有to_days()函数的用法,耗时540 ms, 在Rising Temperature的MySQL提交中击败了74.45% 的用户,代码如下。

  • to_days(date):给出一个日期date,返回一个天数(从公元0年的天数);
select w1.Id from Weather w1, Weather w2 where to_days(w1.RecordDate) - to_days(w2.RecordDate) = 1 and w1.Temperature > w2.Temperature

解法2。两表直接关联,用where筛选日期差1天,温度更高的样本Id,还有datediff()函数的用法,耗时497 ms, 在Rising Temperature的MySQL提交中击败了84.89% 的用户,代码如下。

select w1.Id from Weather w1, Weather w2 where datediff(w1.RecordDate, w2.RecordDate) = 1 and w1.Temperature = w2.Temperature

解法3。两表直接关联,用where筛选日期差1天,温度更高的样本Id,还有subdate()函数的用法,耗时644 ms, 在Rising Temperature的MySQL提交中击败了51.93% 的用户,代码如下。

select w1.Id from Weather w1, Weather w2 where subdate(w1.RecordDate,1) = w2.RecordDate and w1.Temperature > w2.Temperature

结尾

解法1、解法2、解法3:https://blog.csdn.net/wal1314520/article/details/80115738

【LeetCode 简单题】50-上升的温度相关推荐

  1. LeetCode简单题之温度转换

    题目 给你一个四舍五入到两位小数的非负浮点数 celsius 来表示温度,以 摄氏度(Celsius)为单位. 你需要将摄氏度转换为 开氏度(Kelvin)和 华氏度(Fahrenheit),并以数组 ...

  2. LeetCode简单题之基于排列构建数组

    题目 给你一个 从 0 开始的排列 nums(下标也从 0 开始).请你构建一个 同样长度 的数组 ans ,其中,对于每个 i(0 <= i < nums.length),都满足 ans ...

  3. LeetCode简单题之Excel 表中某个范围内的单元格

    题目 Excel 表中的一个单元格 (r, c) 会以字符串 "" 的形式进行表示,其中: 即单元格的列号 c .用英文字母表中的 字母 标识. 例如,第 1 列用 'A' 表示, ...

  4. LeetCode简单题之增量元素之间的最大差值

    题目 给你一个下标从 0 开始的整数数组 nums ,该数组的大小为 n ,请你计算 nums[j] - nums[i] 能求得的 最大差值 ,其中 0 <= i < j < n 且 ...

  5. LeetCode简单题之子数组最大平均数 I

    题目 给你一个由 n 个元素组成的整数数组 nums 和一个整数 k . 请你找出平均数最大且 长度为 k 的连续子数组,并输出该最大平均数. 任何误差小于 10-5 的答案都将被视为正确答案. 示例 ...

  6. LeetCode简单题之二进制矩阵中的特殊位置

    题目 给你一个大小为 rows x cols 的矩阵 mat,其中 mat[i][j] 是 0 或 1,请返回 矩阵 mat 中特殊位置的数目 . 特殊位置 定义:如果 mat[i][j] == 1 ...

  7. LeetCode简单题之设计 Goal 解析器

    题目 请你设计一个可以解释字符串 command 的 Goal 解析器 .command 由 "G"."()" 和/或 "(al)" 按某种 ...

  8. LeetCode简单题之检查两个字符串数组是否相等

    题目 给你两个字符串数组 word1 和 word2 .如果两个数组表示的字符串相同,返回 true :否则,返回 false . 数组表示的字符串 是由数组中的所有元素 按顺序 连接形成的字符串. ...

  9. LeetCode简单题之检查句子中的数字是否递增

    题目 句子是由若干 token 组成的一个列表,token 间用 单个 空格分隔,句子没有前导或尾随空格.每个 token 要么是一个由数字 0-9 组成的不含前导零的 正整数 ,要么是一个由小写英文 ...

最新文章

  1. linux的开机网络设置
  2. Ubuntu 14 查看 docker中对应容器的 IP
  3. win10电脑安装android,5步教你如何在Win10 PC上安装Android 10
  4. 计算机参评高校168所,168所大学排行榜单!计算机科学与技术专业哪些高校专业实力最强!...
  5. 信息学奥赛一本通 1134:合法C标识符 | OpenJudge NOI 1.7 06
  6. php curl exec ch,PHP curl_exec函数
  7. 利用5次shift漏洞破解win7密码
  8. oracle 时间天数计算,oracle计算连续登陆/上班天数
  9. 使用certbot为nginx站点添加免费ssl证书
  10. 电脑端微信如何清空聊天记录
  11. Log与logcat
  12. arm linux源更新,[Linux] - Manjaro ARM 系统配置(更新镜像源,安装 Docker 和 Dotnet Core)...
  13. Canvas+html+css+position定位
  14. chtMultiRegionSimpleFoam求解器的热源不在边界上【翻译】
  15. 基于Linux搭建一个类似Qik手机录像直播平台(服务器端:feng streaming server + web server,客户端:Android手机应用)
  16. python实现科学计数法时间转换
  17. yagmail 发送html,PYTHON发送邮件YAGMAIL的简单实现解析
  18. Android基站定位——通过手机信号获取基站信息(一)
  19. C#毕业设计——基于C#+asp.net+sqlserver的客户关系管理系统设计与实现(毕业论文+程序源码)——客户关系管理系统
  20. 基于FPGA,快速读取数据,快速压缩数据输出JPEG,可改接口

热门文章

  1. 书旗app字符串加密分析
  2. CVE和CVSS计算
  3. 数据分析的求职前景,你关心的问题都在这!
  4. c语言中计算一个字母的序数,C语言编程 输入一串字符统计英文字母的个数
  5. Redis 非线性数据库(一)
  6. [Expression Blend 4] [SketchFlow系列] Chapter 1 瞭解SketchFlow Map (上)
  7. IT人员的周报应该怎么写
  8. 设置百度地图的缩放比例
  9. 蓄电池维护——蓄电池的日常检测与维护
  10. 【Spring+Mybatis+SpringMVC整合项目五】天猫商城(后台-订单管理开发)