现有表t1数据如下:t1:col1 col2
a    5
a    4
b    3
a    7
b    6想得出如下结果:t2:
col1_type  sum_col2
a          16
b           9请问最优的SQL怎么写才好?

解决方案 »

  1.   

    select col1 col1_type,sum(col2) sum_col2 from t1;
      

  2.   

    create table tt(
    col1 varchar2(10),
    col2  number
    )
    insert into tt values('a',5);
    insert into tt values('a',4);
    insert into tt values('b',3);
    insert into tt values('a',7);
    insert into tt values('b',6);
    SQL> select col1,sum(col2) from tt
      2  group by col1
      3  /COL1        SUM(COL2)
    ---------- ----------
    a                  16
    b                   9
      

  3.   

    哈,不好意思,少写了个group by
      

  4.   

    select col1 as col1_type,
           sum(col2) as sum_col2 
      from t1
     group by col1
    应该是最优的了。
      

  5.   

    (我是楼主)不好意思,题目写错了,应该是输出如下结果:t2
    col_a   col_b
    16      9另外还有一个问题,如果想输出如下结果(也就是分类count),应该怎么写? 
    t3:
    col_a   col_b
    3       2
      

  6.   

    select sum(col_a),sum(col_b) 
    from (select decode(col1,'a',col2,0) col_a,decode(col1,'b',col2,0) col_b from t1)
      

  7.   


    select sum(decode(col_a,'a',1,0)) col_a, 
           sum(decode(col_b,'b',1,0)) col_b
    from t1