!一个让人头疼的统计……

neverfade 2004-09-20 04:54:47
表1: fileid dep
1 a
2 b
3 c
……

表2: fileid dep step

1 a 1
1 b 2
1 a 3
2 a 1
2 c 2
现在希望得到的统计结果是: dep fielcount
a 2
b 2
c 2
同一dep对应的相同的fileid只算一个,比如a对应的fileid就是1和2,所以count是2
...全文
209 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuyi8903 2004-09-21
  • 打赏
  • 举报
回复
UP楼上的
zmgowin 2004-09-21
  • 打赏
  • 举报
回复
11:23:06 SQL> select a.dep,a.fielcount,b.fielzcount from
11:23:16 2 (
11:23:16 3 select
11:23:16 4 dep,count(distinct fileid) fielcount
11:23:16 5 from
11:23:16 6 (select fileid,dep from t1 union select fileid,dep from t2) gro
up by dep) a,
11:23:16 7 (
11:23:16 8 select
11:23:16 9 dep,sum(step) fielzcount
11:23:16 10 from
11:23:16 11 (select decode(filezt,2,1,0) step,dep from t1 union select deco
de(step,2,1,0),dep from t2) group by dep) b
11:23:16 12 where a.dep=b.dep;

D FIELCOUNT FIELZCOUNT
- ---------- ----------
a 2 1
b 2 1
c 2 1
bzszp 2004-09-21
  • 打赏
  • 举报
回复
select dep,count(*) filecount ,sum(ezt) fileztcount from
(select table2.dep,decode(table1.filezt,2,1,0) ezt
from table2,table1
where table2.fileid=table1.fileid(+)
) t
group by dep;
neverfade 2004-09-21
  • 打赏
  • 举报
回复
很感谢大家的回复,现在接着进一步提问:
表1: fileid dep filezt
1 a 2
2 b 1
3 c 1
……
表2: fileid dep step
1 a 1
1 b 2
1 c 3
2 a 1
2 c 2
这次想要统计的结果是: dep filecount fileztcount
a 2 1
b 2 1
c 2 0
这里filecount的计算同上,fileztcount统计的是在表1中fileid对应的filezt为2的数量,比如说对于a,filecount里的2指的是fileid为1和2的两个,而1和2对应的filezt分别为2和1,fileztcount只统计filezt等于2的值,所以最后得到的结果是1,同理,c对应的是fileid 为2和3,而这两个对应的filezt均为1所以最后得到的fileztcount为0


这能否通过一句sql得到呢?

拜托大家帮忙了,
另外,我的MSN是:never_fade_candy@hotmail.com 欢迎技术交流
jack_4826 2004-09-21
  • 打赏
  • 举报
回复
不明白楼主什么意思!!
zmgowin 2004-09-21
  • 打赏
  • 举报
回复
08:49:54 SQL> select * from t1;

FILEID D
---------- -
1 a
2 b
3 c

已用时间: 00: 00: 00.00
08:50:08 SQL> select * from t2;

FILEID D STEP
---------- - ----------
1 a 1
1 b 2
1 a 3
2 a 1
2 c 2

已用时间: 00: 00: 00.00
08:50:11 SQL> select dep,count(distinct fileid) fielcount from (select fileid,de
p from t1 union select fileid,dep from t2) group by dep;

D FIELCOUNT
- ----------
a 2
b 2
c 2

已用时间: 00: 00: 00.00
zwj0712 2004-09-21
  • 打赏
  • 举报
回复
学习!
bluelamb 2004-09-21
  • 打赏
  • 举报
回复
select dep,count(distinct fileid)
from table2
group by dep;
zealot_zk 2004-09-20
  • 打赏
  • 举报
回复
支持楼上!好快啊,总是被抢先,郁闷ING
bzszp 2004-09-20
  • 打赏
  • 举报
回复
select dep,count(distinct fileid)
from table2
group by dep;
neverfade 2004-09-20
  • 打赏
  • 举报
回复
能否用一句sql实现?

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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