sql server统计小时数据中每日最大风速及风速对应的风向
客户提出一个需求,有历年逐小时的风速、风向资料,想获取历年最大的风速及风速对应的风向值,通过sql 怎么实现,这个统计,我认为主要考虑一个问题,就是数据重复性,所以我采用以下方法实现,经过验证没有问题:
select * from (
select a.StationNum 站号,b.nian 年,b.yue 月,b.ri 日,a.FengSu10 风速,a.FengXiang10 风向,a.ObserveDate 出现时间,
ROW_NUMBER() OVER (PARTITION BY a.StationNum,b.nian,b.yue,b.ri,a.FengSu10,a.FengXiang10 ORDER BY a.ObserveDate) AS row_sort
from tabDayData a, (
select StationNum,nian,yue,RI,MAX(FengSu10) maxFengSu FROM tabDayData where nian=2013 AND FengSu10<100 group by StationNum,nian,yue,RI
) b where a.StationNum=b.StationNum and a.nian=b.nian and a.yue=b.yue and a.ri=b.ri and a.FengSu10=b.maxFengSu
) c where row_sort =1 ORDER BY 站号 asc,出现时间 asc
思路:
1、将小时按照日分组获取最大风速,作为表b
2、将表b和原表a进行关联查询得到最大风速和最大风速的风向的资料
3、因为可能存在风速值相同的时次,所以增加一个按照站号、风速、风向进行分组,按照时间进行排序的序号
4、对结果进行筛选,取序号为1的,即第一次出现最大值的数据