SQL的统计查询问题!请高手帮忙
表结构为:煤矿名称(varchar(50)),传感器编号(varchar(10)),传感器名称(varchar(50)),传感器类型(varchar(10)),当前值(float),当前时间(datetime)
例如:
A矿 c001 一层传感器 瓦斯 2.5 2007-1-10 10:10:20
A矿 c001 一层传感器 瓦斯 4.5 2007-1-10 12:30:13
A矿 c001 一层传感器 瓦斯 4.0 2007-1-10 18:35:12
A矿 c002 一层传感器 瓦斯 6.4 2007-1-10 10:20:10
A矿 c002 一层传感器 瓦斯 4.4 2007-1-10 13:10:44
生成统计报表想得到的结果为:
矿名 编号 名称 类型 平均值 最大值 最大值时间
A矿 c001 一层传感器 瓦斯 3.7 4.5 2007-1-10 12:30:13
A矿 c002 一层传感器 瓦斯 5.4 6.4 2007-1-10 10:20:10
平均值和最大值可以通过分组求平均和最大取的,如何取得最大值时的时间请高手帮忙!谢谢了
------解决方案--------------------declare @t table(煤矿名称 varchar(50) ,传感器编号 varchar(10),
传感器名称 varchar(50),传感器类型 varchar(10),
当前值 float,当前时间 datetime)
Insert into @t
select 'A矿 ', 'c001 ', '一层传感器 ', '瓦斯 ', '2.5 ', '2007-1-10 10:10:20 '
union select 'A矿 ', 'c001 ', '一层传感器 ', '瓦斯 ', '4.5 ', '2007-1-10 12:30:13 '
union select 'A矿 ', 'c001 ', '一层传感器 ', '瓦斯 ', '4.0 ', '2007-1-10 18:35:12 '
union select 'A矿 ', 'c002 ', '一层传感器 ', '瓦斯 ', '6.4 ', '2007-1-10 10:20:10 '
union select 'A矿 ', 'c002 ', '一层传感器 ', '瓦斯 ', '4.4 ', '2007-1-10 13:10:44 '
Select 煤矿名称,传感器编号,传感器名称,传感器类型,
cast(Avg(当前值) as decimal(18,1)) as 平均值,
cast(max(当前值) as decimal(18,1)) as 最大值,
最大值时间=(Select top 1 当前时间 from @t
where 煤矿名称=a.煤矿名称 and 传感器编号=a.传感器编号
and 传感器类型=a.传感器类型 and 当前值=max(a.当前值))
from @t as a
group by 煤矿名称,传感器编号,传感器名称,传感器类型