现在有这么一个表,里有一个日期时间字段(2007-1-21 19:15:00)这样的格式,有日期,和时间。但现在有这样一个需求,就按日统计,按周统计,按月统计。不知对日,对周,对月的时间计算是怎么样?--------------------------------
举个例:日期时间       数量
2007-1-1 19:31:25  56
2007-1-1 21:31:25  35
2007-1-1 35:31:25  43
2007-1-2 19:31:25  34
2007-1-3 35:31:25  35
2007-1-3 21:31:25  65如何求到每天的数量平均值呢?

解决方案 »

  1.   

    --每天平均值
    select 日期时间,avg(数量) as 平均数量
    group by convert(varchar(10),日期时间,120)
      

  2.   

    group by convert(varchar(10),'2007-1-21 19:15:00',120) --对日
    group by convert(varchar(7),'2007-1-21 19:15:00',120) --对月
      

  3.   

    --每月平均值
    select 日期时间,avg(数量) as 平均数量
    group by month(日期时间)
      

  4.   

    对天,按convert(varchar(10),日期字段名,120)分组。
    对月,按convert(varchar(7),日期字段名,120)分组。
    对年,按convert(varchar(4),日期字段名,120)分组。
      

  5.   

    --每周平均值
    select 日期时间,avg(数量) as 平均数量
    group by datepart(week,日期时间)
      

  6.   


    select datepart(yy,'2007-1-21 19:15:00')--对年select datepart(mm,'2007-1-21 19:15:00')--对月select datepart(dd,'2007-1-21 19:15:00')--对天
      

  7.   

    create table T(日期时间 datetime, 数量 int)
    insert T select  '2007-1-1 19:31:25', 56
    union all select '2007-1-1 21:31:25', 35
    union all select '2007-1-1 15:31:25', 43
    union all select '2007-1-2 19:31:25', 34
    union all select '2007-1-3 15:31:25', 35
    union all select '2007-1-3 21:31:25', 65--按日统计
    select 日期时间=convert(char(10), 日期时间, 120), 数量=sum(数量) 
    from T
    group by convert(char(10), 日期时间, 120)--按周统计
    select 日期时间=datepart(week, 日期时间), 数量=sum(数量) 
    from T
    where year(日期时间)=year(getdate())
    group by datepart(week, 日期时间)--按月统计
    select 日期时间=convert(char(7), 日期时间, 120), 数量=sum(数量) 
    from T
    group by convert(char(7), 日期时间, 120)