结果集:groupid     num
1           10
1           10
1           10
2           5
2           5
...
我的结果集中,同一个groupid出现多次,同一个groupid对应的num是相同的,我想求下平均select groupid ,avg(num) from 结果集
group by groupid
这样查询的结果不应该是:groupid     num
1           3.33
2           2.5
...
么但是,我的结果却是
groupid     num
1           10
2           5
。。
为什么啊

解决方案 »

  1.   

    很明显的,因为 groupid = 1 的有 3 条记录,每条记录的 num = 10, avg(num) = (10 + 10 + 10) / 3 = 10你想的结果是错的,你把一条记录的 num 当成 3 条记录的总值了
      

  2.   

    求平均是先加再除的,
    你要的结果,
    with  aa as
    (
    select 1 a, 10 b from dual union all
    select 1 a, 10 b from dual union all
    select 1 a, 10 b from dual union all
    select 2 a, 5 b from dual union all
    select 2 a, 5 b from dual

    select  a,trunc(b/count(*),2) from aa group by a,b