select avg(分数) from (select  日期, 分数 from tb group by 日期)t

解决方案 »

  1.   

    select avg(分数) from (select  日期, 分数 from tb group by 日期,分数)t
    少粘贴了一个字段。
      

  2.   

    试试这个
      select  日期, sum(分数)%COUNT (日期) from tb group by 日期
      

  3.   

    测试数据
    日期        用户名    得分 班次
    2014-06-01   a         10 白班
    2014-06-01   b         10 白班
    2014-06-01   c         5  中班2014-06-02   a         20 白班
    2014-06-02   b         20 白班
    2014-06-02   c         15 中班2014-06-03   a         10 白班
    2014-06-03   b         10 白班
    2014-06-03   c         10 白班
     
    2014-06-04   a         15 白班
    2014-06-04   b         15 白班2014-06-05   a         10 白班
    2014-06-05   b         10 白班
    2014-06-05   c         10 白班
    2014-06-05   d         15 中班2014-06-06   a         20 白班
    2014-06-06   b         20 白班
    2014-06-06   c         20 白班
    2014-06-06   d         20 白班
    2014-06-06   e         30 中班
    如上测试数据,某一天班次为“白班”的每个人的分数都是一样的,
    其他班次的分数则不相同
    我想要的结果是:某一天班次为“白班”的只取一个分数,然后求平均分;
    比如我想求 6月1号到6月4号的平均分计算公式为:
    (10+20+10+15)/4=13.75
      

  4.   

    SUM(DISTINCT(得分))%count(日期)as得分 from Test
    GROUP BY Test
      

  5.   

    create table tb (日期 datetime ,用户 char(5),得分 int , 班次 varchar(10))
    insert into tb
    select '2014-06-01','a','10','白班' union  all            
    select '2014-06-01','b','10','白班' union  all            
    select '2014-06-01','c','5','中班'  union  all            
    select '2014-06-02','a','20','白班' union  all            
    select '2014-06-02','b','20','白班' union  all            
    select '2014-06-02','c','15','中班' union  all            
    select '2014-06-03','a','10','白班' union  all            
    select '2014-06-03','b','10','白班' union  all            
    select '2014-06-03','c','10','白班' union  all            
    select '2014-06-04','a','15','白班' union  all            
    select '2014-06-04','b','15','白班' union  all            
    select '2014-06-05','a','10','白班' union  all            
    select '2014-06-05','b','10','白班' union  all            
    select '2014-06-05','c','10','白班' union  all            
    select '2014-06-05','d','15','中班' union  all            
    select '2014-06-06','a','20','白班' union  all            
    select '2014-06-06','b','20','白班' union  all            
    select '2014-06-06','c','20','白班' union  all            
    select '2014-06-06','d','20','白班' union  all            
    select '2014-06-06','e','30','中班'                       go
    with cte as
    (
    select distinct 日期,'-' as 用户,班次,得分 from  tb  where 班次='白班' and 日期 >= '2014-06-01' and 日期 <= '2014-06-04'
    )
    select  cast (sum(得分) as numeric (5,0))/cast (count(日期)as numeric(5,0) ) as [平均值] from cte--平均值
    --13.750000
      

  6.   

    select sum(得分)/count(得分) from (SELECT 得分,日期 from 班次表 where 班次='白班' and 日期>='2014-6-1' and 日期<='2014-6-4'
    Group by 得分,日期)) as x
    谢谢朋友们的热心回答。我用这个语句已经解决,之前一直想着除了总天数,没绕过弯来出除以总人数。嘿嘿,结贴。