求一条复杂SQL写法

匠心零度
博客专家认证
2013-11-08 05:08:49


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

...全文
251 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
weewtoday 2013-11-10
  • 打赏
  • 举报
回复
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;
匠心零度 2013-11-09
  • 打赏
  • 举报
回复
最后需要知道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
匠心零度 2013-11-08
  • 打赏
  • 举报
回复
以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 最后需要的是这样的效果,楼上的都好像不满足条件!!!!
zgq344929174 2013-11-08
  • 打赏
  • 举报
回复
select file1,file2, count(*) sum from test01 group by file1,file2 order by file1,file2;
zgq344929174 2013-11-08
  • 打赏
  • 举报
回复
select file1,file2, file3,count(*) total from test01 group by file1,file2,file3 order by 1;
zhumingxu1984 2013-11-08
  • 打赏
  • 举报
回复
select file1,file2,file3,count(*) from testforrc group by rollup(file1,file2,file3)
匠心零度 2013-11-08
  • 打赏
  • 举报
回复
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

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧