求一个专业表中每个专业分数最高的人,如果分数相同,把姓名合并输出。
表的结构如下:
需要实现的效果如下:
--创建sql的脚本:
create table DM_XSZYB_TEST
(
xm VARCHAR2(200),
zy VARCHAR2(200),
fs NUMBER
)
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);
--插入脚本:
insert into dm_xszyb_test (XH, ZY, FS)
values ('小强', '语文', 1);
insert into dm_xszyb_test (XH, ZY, FS)
values ('芳芳', '语文', 2);
insert into dm_xszyb_test (XH, ZY, FS)
values ('小强', '数学', 3);
insert into dm_xszyb_test (XH, ZY, FS)
values ('芳芳', '数学', 4);
insert into dm_xszyb_test (XH, ZY, FS)
values ('阿拉蕾', '数学', 5);
insert into dm_xszyb_test (XH, ZY, FS)
values ('小强', '英语', 6);
insert into dm_xszyb_test (XH, ZY, FS)
values ('芳芳', '英语', 7);
insert into dm_xszyb_test (XH, ZY, FS)
values ('小强', '物理', 8);
insert into dm_xszyb_test (XH, ZY, FS)
values ('芳芳', '物理', 9);
insert into dm_xszyb_test (XH, ZY, FS)
values ('阿拉蕾', '物理', 10);
insert into dm_xszyb_test (XH, ZY, FS)
values ('小强', '化学', 11);
insert into dm_xszyb_test (XH, ZY, FS)
values ('芳芳', '化学', 12);
insert into dm_xszyb_test (XH, ZY, FS)
values ('阿拉蕾', '化学', 13);
insert into dm_xszyb_test (XH, ZY, FS)
values ('李梅', '英语', 7);
您先思考,我个人答案在最下面,您写出您自己的答案后再看我的。我的答案目前不理想。
select wm_concat(b.xh)as xm, a.zy, b.fs
from (select zy, max(fs) as zgf from dm_xszyb_test group by zy) a, dm_xszyb_test b
where a.zy = b.zy and a.zgf = b.fs
group by a.zy,b.fs;