一条SQL语句求每月连续低温时间
来源:互联网 发布:海马软件删不掉 编辑:程序博客网 时间:2024/05/02 04:49
近期为某个项目写存储过程做统计。其中有个是这样的:
求每个月至少连续3个小时低于某个温度值的时间(小时)。
假设有个全年温度表:
CREATE TABLE #t(m INT, h INT ,t DECIMAL(18,4));--m:月份 h:小时 t:温度值 --一年有8760小时,因此气候表里面有8760条记录,对应全年每小时的温度值
思路是这样的:
1、先将低于指定温度的记录都找出来
2、然后在这些记录中找出符合条件的,即那些属于至少连续3小时低于指定温度的记录
至少连续3小时低于指定温度的记录有如下特征:
比如说,有记录 h= 3、4、5、6、7,它们显然满足条件。
mht
1314
1412
1510
1612
1714
1912
11011
11313
11514
对于 h=3,存在着 h+1,h+2 都低于指定温度
对于 h=4、5、6,存在着 h-1,h+1 都低于指定温度
对于 h=7,存在着 h-1,h-2 都低于指定温度
只要满足这三项条件的任意一项,即可认为该时刻符合条件。因此可得SQL语句:
WITH w AS(SELECT [m],[h],[t]FROM #t WHERE [t] < 15 )SELECT m,Free = COUNT(*) FROM w WHERE (EXISTS(SELECT 1 FROM w as w1 where m=w.m and h=w.h+1) AND EXISTS(SELECT 1 FROM w as w1 where m=w.m and h=w.h+2))OR (EXISTS(SELECT 1 FROM w as w1 where m=w.m and h=w.h-1) AND EXISTS(SELECT 1 FROM w as w1 where m=w.m and h=w.h+1))OR (EXISTS(SELECT 1 FROM w as w1 where m=w.m and h=w.h-1) AND EXISTS(SELECT 1 FROM w as w1 where m=w.m and h=w.h-2)) GROUP BY m;
0 0
- 一条SQL语句求每月连续低温时间
- 一条SQL语句求每月连续低温时间
- 求够一条SQL语句
- 求一条sql语句,绝对难题
- 一条SQL语句求全年平均值
- 怎样一条SQL语句统计该年每月的数据个数
- 请用一条sql语句实现求最高成绩,
- [VB.NET]再求一条SQL语句更新问题
- 一条SQL语句求前面记录的平均值
- 获取一条SQL语句执行了多少时间
- 一条SQL语句!
- 一条sql语句
- 一条SQL语句
- 一条SQL语句
- 一条SQL语句
- 一条SQL语句研究
- 一条sql语句
- 一条SQL语句
- 整数溢出的危害和预防
- thinkphp验证码类修改,可自适应改变文字大小
- 网络流题集转自夏天的风
- uva 1529 - Clock(数论)
- python 自动下载 moudle
- 一条SQL语句求每月连续低温时间
- 【Cookie:默认存储在浏览器的内存中】显示上一次访问时间、商品浏览记录
- MFC自动识别串口
- 九度 1050 哈工大 2010 复试上机
- 用原生js实现jquery ajax
- POJ2653 Pick-up sticks
- 简单使用:git下载、修改和上传
- UVa 843 Crypt Kicker
- sqlserver,oracle,mysql等的driver驱动,url