求教个sql语句,该如何解决
求教个sql语句
表结构如下:
RecordDate Value1 Value2
2013-01-10 11:20:30 5.0 6.0
2013-01-10 11:20:32 7.0 8.0
2013-01-11 12:20:30 4.0 3.0
2013-01-11 12:20:32 9.0 5.0
..................
其中,RecordDate字段以秒计算,一天估计有很多数。有个查询语句想了很久都不知道怎么实现,请大家帮忙看看。
1、查询一年中每个月的平均值、最大值或者最小值
比如2013年,期待结果,数据假定:
月份 max min everage
1 9 2 5
2 9 2 5
3 9 2 5
4 9 2 5
5 9 2 5
6 9 2 5
7 9 2 5
8 9 2 5
9 9 2 5
10 9 2 5
11 9 2 5
12 9 2 5
------解决方案--------------------
表结构如下:
RecordDate Value1 Value2
2013-01-10 11:20:30 5.0 6.0
2013-01-10 11:20:32 7.0 8.0
2013-01-11 12:20:30 4.0 3.0
2013-01-11 12:20:32 9.0 5.0
..................
其中,RecordDate字段以秒计算,一天估计有很多数。有个查询语句想了很久都不知道怎么实现,请大家帮忙看看。
1、查询一年中每个月的平均值、最大值或者最小值
比如2013年,期待结果,数据假定:
月份 max min everage
1 9 2 5
2 9 2 5
3 9 2 5
4 9 2 5
5 9 2 5
6 9 2 5
7 9 2 5
8 9 2 5
9 9 2 5
10 9 2 5
11 9 2 5
12 9 2 5
------解决方案--------------------
----------------------------------------------------------------
-- Author :DBA_Huangzj(發糞塗牆)
-- Date :2014-01-13 13:22:12
-- Version:
-- Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)
-- Dec 28 2012 20:23:12
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[huang]
if object_id('[huang]') is not null drop table [huang]
go
create table [huang]([RecordDate] datetime,[Value1] numeric(2,1),[Value2] numeric(2,1))
insert [huang]
select '2013-01-10 11:20:30',5.0,6.0 union all
select '2013-01-10 11:20:32',7.0,8.0 union all
select '2013-01-11 12:20:30',4.0,3.0 union ALL
select '2013-01-11 12:20:32',9.0,5.0 union ALL
select '2013-02-11 12:20:32',9.0,5.0 union ALL
select '2014-01-11 12:20:32',9.0,5.0
--------------开始查询--------------------------
select SUBSTRING(CONVERT(VARCHAR(10),[RecordDate],120),PATINDEX('%-%',CONVERT(VARCHAR(10),[RecordDate],120))+1,2)[月份],MAX([Value1])MaxValue1,MIN([Value1])MinValue1,AVG([Value1])AvgValue
from [huang]
WHERE LEFT(CONVERT(VARCHAR(10),[RecordDate],120),4)='2013'
GROUP BY SUBSTRING(CONVERT(VARCHAR(10),[RecordDate],120),PATINDEX('%-%',CONVERT(VARCHAR(10),[RecordDate],120))+1,2)
----------------结果----------------------------
/*
月份 MaxValue1 MinValue1 AvgValue
---- --------------------------------------- --------------------------------------- ---------------------------------------
01 9.0 4.0 6.250000
02 9.0 9.0 9.000000