select ccc,sum(1) 
from ttt 
where ccc like 'sss%' 
group by ccc; 
到底是对第一列求和,还是统计记录数? (环境以Oracle为准)

解决方案 »

  1.   

    sum(1) = count(*)*1
    sum(2) = count(*)*2
    sum(3) = count(*)*3
    sum.......
      

  2.   

    统计记录数啊,晕倒,我之前说错了啊
    有多少记录就有多少个1相加,可以作为统计记录的一种方法,当然还可以COUNT(*)来统计
      

  3.   


    SQL> WITH tt AS(
      2    SELECT 1 a,2 b FROM dual
      3  )SELECT SUM(1) FROM tt;    SUM(1)
    ----------
             1SQL>
    SQL> WITH tt AS(
      2    SELECT 1 a,2 b FROM dual UNION ALL
      3    SELECT 2 a,2 b FROM dual
      4  )SELECT SUM(1) FROM tt;    SUM(1)
    ----------
             2SQL>
    SQL> WITH tt AS(
      2    SELECT 1 a,2 b FROM dual UNION ALL
      3    SELECT 2 a,2 b FROM dual UNION ALL
      4    SELECT 3 a,2 b FROM dual
      5  )SELECT SUM(1) FROM tt;    SUM(1)
    ----------
             3
    你可以这么理解:
       select sum(字段) from 表名; 是对表里面的字段求和,这个我想你不会陌生。
       那么如果这个表里面这个字段的值全是【1】的话就是:
       select sum(1) from 表名; 了。这么说你应该可以理解了。