id      file1    file2    file3
1       A公司    A项目   开发
2       A公司    A项目   开发
3       A公司    B项目   开发
4       A公司    B项目   开发
5       A公司    B项目   实施
6       B公司    B项目   实施
7       B公司    C项目   测试
8       B公司    C项目   测试
9       B公司    C项目   开发
10      C公司    C项目   开发
11      C公司    C项目   测试
12      C公司    D项目   开发
13      C公司    F项目   开发
14      C公司    F项目   测试
15      C公司    F项目   实施现在需要根据根据file1,file2,file3一样的统计人事
以A公司为例子,A公司 A项目 开发 的有两个人,
               A公司 B项目 开发 的有两个人,
               A公司 B项目 实施 的有一个人,     id      file1   file2    file3  count
1       A公司   A项目   开发   2
2       A公司   A项目   开发   2
3       A公司   B项目   开发   2
4       A公司   B项目   开发   2
5       A公司   B项目   实施   1类似这样的
我还需要根据file1和file2来得到总人数
以A公司为例子,A公司 A项目 的有两个人(就两个开发),
               A公司 B项目 的有三个人(包括2个开发一个实施),     id      file1   file2    file3  count  sum
1       A公司   A项目   开发   2      2
2       A公司   A项目   开发   2      2
3       A公司   B项目   开发   2      3
4       A公司   B项目   开发   2      3
5       A公司   B项目   实施   1      3SQL

解决方案 »

  1.   

    select a.* from (select file1, file2, file3, count(*) count1  from testforrc  group by file1, file2, file3)a   left join(select file1, file2, file3  from testforrc)  b on a.file1 = b.file1 and  a.file2 = b.file2 and  a.file3 = b.file3  得到count列表
    A公司 A项目 开发 2
    A公司 A项目 开发 2
    A公司 B项目 开发 2
    A公司 B项目 实施 1
    A公司 B项目 开发 2
    B公司 B项目 实施 1
    B公司 C项目 开发 1
    B公司 C项目 测试 2
    B公司 C项目 测试 2
    C公司 C项目 测试 1
    C公司 C项目 开发 1
    C公司 D项目 开发 1
    C公司 F项目 测试 1
    C公司 F项目 实施 1
    C公司 F项目 开发 1 
      

  2.   

    select file1,file2,file3,count(*) from testforrc group by rollup(file1,file2,file3)
      

  3.   

    select file1,file2, file3,count(*) total from test01 group by file1,file2,file3 order by 1;
      

  4.   

    select file1,file2, count(*) sum from test01 group by file1,file2 order by file1,file2;
      

  5.   

    以A公司为例子,A公司 A项目 的有两个人(就两个开发),
                   A公司 B项目 的有三个人(包括2个开发一个实施),     id      file1   file2    file3  count  sum
    1       A公司   A项目   开发   2      2
    2       A公司   A项目   开发   2      2
    3       A公司   B项目   开发   2      3
    4       A公司   B项目   开发   2      3
    5       A公司   B项目   实施   1      3最后需要的是这样的效果,楼上的都好像不满足条件!!!!
      

  6.   

    最后需要知道file1和file2相同的总人数,还要知道 file1,file2,file3相同的人数 :    id      file1   file2   file3  count  sum
        1 A公司 A项目 开发   2      2
        2 A公司 A项目 开发   2      2
        3 A公司 B项目 开发   2      3
        4 A公司 B项目 开发   2      3
        5 A公司 B项目 实施   1      3 
      

  7.   

    SELECT  rownum, tt.*, dd.summ
      FROM   (SELECT   t.*
                FROM   (  SELECT   file1,
                                   file2,
                                   file3,
                                   COUNT ( * )
                            FROM   test1
                        GROUP BY   file1, file2, file3
                        ORDER BY   1) t, test1 a
               WHERE       t.file1 = a.file1
                       AND t.file2 = a.file2
                       AND t.file3 = a.file3) tt,
             (  SELECT   file1, file2, COUNT ( * ) summ
                  FROM   test1
              GROUP BY   file1, file2) dd
     WHERE   tt.file1 = dd.file1 AND tt.file2 = dd.file2;
      SELECT   file1, file2, COUNT ( * ) summ
        FROM   test1
    GROUP BY   file1, file2;