统计问题 假设有 A表  ,然后对A表中的字段 3 进行 sum计算 
A表的主键是 字段1和字段2,假设有如下记录 
字段1   字段2    字段3          字段4
1        1       100           a
1        1       100           a
2        1       200           b
2        1       200           b现在以 字段4进行group by,统计 字段3的总数 得出的结果是 
字段4   sum
a       200
b       400
因为  存在主键重复的情况,所以我想要的结果是 
字段4   sum
a       100
b       200
也就是 说对于主键相同的 记录,字段3只统计一次。如何实现这个sql语句。

解决方案 »

  1.   

    用distinct过滤掉重复记录select col4,sum(col3) col3
    from
    (select distinct * from a)
    group by col4;
      

  2.   

    有一点觉得非常奇怪的是,既然你的表col1和col2是主键了,为什么还可以重复主键?
      

  3.   

    select col4, sum(col3) from
    (
      select col1, col2, col3, col4 from 
       (
          select col1, col2, col3, col4, row_number() over(partition by col1, col2 order by col3) rn
            from a) a 
      where rn = 1
    )
    group by col4;
      

  4.   


    distinct clumn; 单独字段 即可达到楼主的要求