求救! 关于sql server 的几条查询语句

来源:百度知道 编辑:UC知道 时间:2024/05/06 04:53:33
地区 日期 平均温度 最高温度 最低温度 降雨量 天气类型 相对湿度
宝 坻 06123000 -4.8 -.4 -11.5 .3 阴 89
宝 坻 06123012 -3.4 0 0 .3 阴 89
宝 坻 06123006 -3.1 0 -5.3 .8 阴 86
市 区 06123006 -1.9 0 -2.7 .7 阴 88
市 区 06123000 -2.1 .8 -6.2 .4 阴 88
市 区 06123012 -1.5 0 0 微量 阴 90
塘 沽 06123012 -2 0 0 微量 阴 90
塘 沽 06123021 -3.7 0 0 阴 87
塘 沽 06123009 -2.1 0 0 阴 90
塘 沽 06123000 -3.2 0 0 .8 阴 88
塘 沽 06123006 -2.5 0 0 阴 90
塘 沽 06123018 -4 -.4 0 阴 87
西 青 06123000 -2.9 0 0 .3 阴 92
西 青 06123003 -1.8 0 0 阴 90
西 青 06123018 -3.1 -.6 0 阴 92
西 青 06123021 -3.6 0 0 阴 90
西 青 06123006 -1.5 0 -3.6 .6 阴 86
西 青 06123009 -2.7 0 0 阴 88
西 青 06123012 -2.7 0 0 微量 阴 90
以上是部分数据库中表的结构及内容
注:1 每个字段均为char型
2 每个站名每天采集数据的时间段和次数不同 日期一共8位 前六位是年月日 后两位为时间
实现的功能
1 通过对各站的计算输出每个站当天的天气实况资料 一共13个站 共输出13行
2 字段日期列 输出6位的日期 即年月日
3 字段平均温度列 须计算出当天同一站点温度的平均值
4 字段最高温度列 须计算出当天同一站点的最高温度
5 字段最低温度列 须计算出当天同一站点的最低温度
6 字段

注意:非数字的字符是不能转换成数字,以下是把非数字的降雨量全部当作0计算!

select 地区,
left(日期,6)日期,
round(avg(convert(numeric(9,2),平均温度)),2)平均温度,
max(convert(numeric(9,2),最高温度))最高温度,
min(convert(numeric(9,2),最低温度))最低温度,
round(avg(case when isnumeric(降雨量)=1 then convert(numeric(9,2),降雨量) else 0 end),2)降雨量,
(select top 1 天气类型 from [temp] where 地区=x.地区 group by 天气类型 order by count(1) desc)天气类型,
round(avg(convert(numeric(9,2),相对湿度)),2)相对湿度
from [temp] x
group by 地区,left(日期,6)

大概是用SELECT语句吧 具体细节不是很清楚