LeetCode_Mysql_Rising Temperature

原创 2015年07月08日 16:29:02

197. Rising Temperature

timu


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):

这里写图片描述


希望大家多多交流指正!

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

197. Rising Temperature#1

Solution#1# Write your MySQL query statement below SELECT T.Id FROM Weather AS T INNER JOIN Weather...

India rising(印度的崛起)

  • 2008年07月03日 10:06
  • 600KB
  • 下载

[hdu3477] Temperature [3472] HS BDC

Temperature http://acm.hdu.edu.cn/showproblem.php?pid=3477 题目描述略。 微积分题,推导过程如下: -dT/dt=k(T-E)  ...

【bzoj 2276】[Poi2011]Temperature(单调队列)

断虹霁雨,秋空煜煜

Rising 2009 SN Reader

  • 2009年12月10日 11:11
  • 75KB
  • 下载

Dallas one-wire temperature reading on BeagleBone Black with dto (未翻译)

OK, this was very straight forward with the help of Koen’s blog and the BeagleBoard google group...

Java源码-温度转换小程序(Temperature Conversion)

需求简述:使用Swing编写GUI程序,实现摄氏温度、华氏温度及热力学温度(开尔文温度)的相互转换。 心得:在08年编写的Applet小程序的基础上修改而来。(Applet重构为Swing时,大部分...

bzoj2276【poi2011】Temperature

单调队列
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCode_Mysql_Rising Temperature
举报原因:
原因补充:

(最多只允许输入30个字)