一道sql面试题吧

create table tmpy1
(
sno char(4), --学号
cno char(4), --课程号
value1 decimal(14,2) --成绩
)
insert into tmpy1 values('s1','c1',10);
insert into tmpy1 values('s1','c2',20);
insert into tmpy1 values('s2','c1',30);
insert into tmpy1 values('s2','c2',40);
insert into tmpy1 values('s2','c3',50);
insert into tmpy1 values('s3','c1',60);
insert into tmpy1 values('s3','c3',70);
insert into tmpy1 values('s4','c1',80);
insert into tmpy1 values('s4','c2',90);
1、查询与s1选择课程一样的学生学号、姓名
select unique sno from tmpy1
where cno IN (select cno from tmpy1 where sno = 's1')  and sno <> 's1' 
2、查询每科分数最高的2条记录
SELECT a.sno,a.cno,a.value1 FROM tmpy1 a WHERE (SELECT COUNT(cno) FROM tmpy1 WHERE cno=a.cno AND a.value1<value1)<2 
ORDER BY cno ASC,value1 DESC


或用 left join  


另可参见:
http://blog.csdn.net/acmain_chm/article/details/4126306

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值