LeetCode_Mysql_Rising Temperature
来源:互联网 发布:centos移除用户 编辑:程序博客网 时间:2024/05/26 22:06
197. Rising Temperature
1. 问题描述:
从 Weather 表中,写sql语句获取比昨天温度高的日期id。
2. 解决思路:
两种方式:第一种是对表进行普通查询;第二种是基于过程并用户自定义变量,让表order by Date asc,然后对天数相差1,取出后一天高于前一天温度的id即可。用户定义变量的方式需要主要两点,一个是变量的初始化, 另一个是变量每次查询后的赋值。
3. sql语句:
3.1 普通查询:
select w1.Id from Weather w1, Weather w2 where w1.Temperature>w2.Temperature and DATEDIFF(w1.Date,w2.Date)=1 -- 也可以写成and TO_DAYS(w1.Date)-TO_DAYS(w2.Date)=1
3.2 使用用户自定义变量:
select Id from ( select case when Temperature > @prevTemp and DATEDIFF(Date, @prevDate) = 1 Then Id Else NULL end as Id, @prevTemp := Temperature, @prevDate := Date from (select * from weather order by Date ASC) w, (select @prevTemp:=NULL, @prevDate:=NULL) init ) d where Id is not NULL;
4. 运行时间:
4.1 普通查询( 1105ms):
4.1 使用用户自定义变量( 937ms):
希望大家多多交流指正!
0 0
- LeetCode_Mysql_Rising Temperature
- Temperature
- Temperature compensation
- Rising Temperature
- Rising Temperature
- Rising Temperature
- Rising Temperature
- bzoj2276 Temperature
- Rising Temperature
- Rising Temperature
- assignment 2 - temperature converter
- hdu 3477 Temperature
- hdu 3477 Temperature
- input_dev & battery temperature
- [LeetCode][Database]Rising Temperature
- LeetCode Rising Temperature
- Leetcode: Rising Temperature
- 【LeetCode】Rising Temperature
- 基于K-means算法的文本聚类
- php实例:打印金字塔
- tomcat服务器连接池知识
- MySQl Study学习之--MySQl二进制日志管理
- oracle数据库存储过程范例(使用游标进行循环)
- LeetCode_Mysql_Rising Temperature
- 阿里CDN流程解读
- Android-使用网桥代理大师VPN更新SDK
- Android Binder 通信机制学习(三)
- SAP query传输以后需要重新生成程序
- phpcms 动态网址
- 高效抽取loading,再多的加载页面也不怕
- 3Sum
- 整合才是有效安全的关键