leetcode 197. Rising Temperature

Given a Weather table, write a SQL query to find all dates' Ids with higher temperature compared to its previous (yesterday's) dates.

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

For example, return the following Ids for the above Weather table:

+----+
| Id |
+----+
|  2 |
|  4 |
+----+
create table weather(
Id int not null,
Date date,
Temperature int);


insert into weather  values
(1,'2015-01-01',10),
(2,'2015-01-02',25),
(3,'2015-01-03',20),
(4,'2015-01-04',30);


1、where
select w1.Id from Weather w1, Weather w2 
where convert(datetime,w1.date)=convert(datetime,w2.date)+1 and w1.Temperature>w2.Temperature;

2、inner join … on
select w1.Id from Weather w1 inner join Weather w2 
on convert(datetime,w1.date)=convert(datetime,w2.date)+1 and w1.Temperature>w2.Temperature;

--开窗函数只能出现在 SELECT 或 ORDER BY 子句中
--select *,LAG(Temperature) over(order by Date) PrivousWeather from weather 
--where Temperature>LAG(Temperature) over(order by Date)

3、窗口函数
with temp as
(
select *,LAG(Temperature) over(order by Date) PrivousWeather from weather 
)
select id from temp where Temperature>PrivousWeather

datetime

从1753年1月1日到9999年12月31日的日期和时间数据,精确度为百分之三秒(等于   3.33毫秒或0.00333秒)。如下表所示,把值调整到.000、.003、或.007 秒的增量。

日期和时间部分,可以表示的日期范围从公元1753年1月1日00:00:00.000 到9999年12月31日23:59:59.997 ,精确到3.33毫秒,它需要8个字节的存储空间。


date

SQL Server 2008新引进的数据类型。它表示一个日子,不包含时间部分,可以表示的日期范围从公元元年1月1日到9999年12月31日。只需要3个字节的存储空间。


注:date类型与datetime类型相比还有一点比较特殊,那就是date类型数值不能直接和int类型数值相运算,必须先转换成datetime类型


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值