首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

求一条复杂SQL写法,该如何处理

2013-11-11 
求一条复杂SQL写法idfile1file2file31A公司A项目开发2A公司A项目开发3A公司B项目开发4A公司B项目开发5A公

求一条复杂SQL写法
求一条复杂SQL写法,该如何处理

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      3

SQL
[解决办法]
select file1,file2,file3,count(*) from testforrc group by rollup(file1,file2,file3)
[解决办法]
select file1,file2, file3,count(*) total from test01 group by file1,file2,file3 order by 1;
[解决办法]
select file1,file2, count(*) sum from test01 group by file1,file2 order by file1,file2;
[解决办法]
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;

热点排行
Bad Request.