[求助]挑战你的SQL,双倍给分(200分)

amengdewo 2004-07-13 10:18:22
请用下面的语句创建测试数据
create table test(ID int, F1 number, F2 number);
insert into test values(1, 1, 1);
insert into test values(2, 1, 1);
insert into test values(3, 1, 1);
insert into test values(4, 1, 1);
insert into test values(5, 1, 1);
insert into test values(6, 2, 2);
insert into test values(7, 2, 2);
insert into test values(8, 2, 2);
insert into test values(9, 2, 2);
insert into test values(10, 2, 2);
insert into test values(11, 3, 3);
insert into test values(12, 3, 3);
insert into test values(13, 3, 3);

请用一个SQL语句得到下面的形式
ID F1 F2 SUMF1 SUMF2
-- ---------- ------------------------------
1 1 1 5 5
2 1 1 5 5
3 1 1 5 5
4 1 1 5 5
5 1 1 5 5
6 2 2 10 10
7 2 2 10 10
8 2 2 10 10
9 2 2 10 10
10 2 2 10 10
11 3 3 9 9
12 3 3 9 9
13 3 3 9 9


每5行对F1,F2分别求和,分别放在SUMF1,SUMF2中
...全文
120 4 打赏 收藏 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jxc 2004-07-14
  • 打赏
  • 举报
回复
select f1,f2 ,
(select sum(f1) from test t2 where t1.f1 = t2.f1),
(select sum(f2) from test t2 where t1.f1 = t2.f1)
from test t1
amengdewo 2004-07-14
  • 打赏
  • 举报
回复
谢谢两位, bzszp(www.bzszp.533.net) 的方法是可以的

bzszp 2004-07-14
  • 打赏
  • 举报
回复
SQL> select * from test;

ID F1 F2
---------- ---------- ----------
1 1 1
2 1 1
3 1 1
4 1 1
5 1 1
6 2 2
7 2 2
8 2 2
9 2 2
10 2 2
11 3 3

ID F1 F2
---------- ---------- ----------
12 3 3
13 3 3

已选择13行。

SQL> select id,f1,f2,sumf1,sumf2 from test,(
2 select trunc((id-1)/5) tid,sum(f1) sumf1,sum(f2) sumf2 from test group by trunc((id-1)/5)
3 ) t
4 where trunc((id-1)/5)=t.tid(+);

ID F1 F2 SUMF1 SUMF2
---------- ---------- ---------- ---------- ----------
1 1 1 5 5
2 1 1 5 5
3 1 1 5 5
4 1 1 5 5
5 1 1 5 5
6 2 2 10 10
7 2 2 10 10
8 2 2 10 10
9 2 2 10 10
10 2 2 10 10
11 3 3 9 9

ID F1 F2 SUMF1 SUMF2
---------- ---------- ---------- ---------- ----------
12 3 3 9 9
13 3 3 9 9

已选择13行。

SQL>
zjcxc 2004-07-13
  • 打赏
  • 举报
回复
--SQL Server与oracle的语法差别有多大?

select a.*,b.SUMF1,c.SUMF2
from test a
join(
select f1,SUMF1=sum(f1)
from test
group by f1
)b on a.f1=b.f1
join(
select f2,SUMF2=sum(f2)
from test
group by f2
)c on a.f2=b.f2

3,499

社区成员

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

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