一个简单的查询语句的问题,想不出来,请大家赐教
由一张表cj
name xuke chengji
张三 语文 80
张三 数学 75
张三 英语 81
李四 语文 81
李四 数学 90
李四 英语 88
要求:写一段sql语言,查出所有科目成绩都大于80分的学生姓名.也就是语文,数学,英语都要大于80.
谢谢了.
问题点数:20、回复次数:10Top
1 楼denniswwh(玩子)回复于 2006-03-04 10:52:10 得分 0
select name from cj
where chengji>80
group by name
having count(*)=3Top
2 楼tangtangno1(糖糖)回复于 2006-03-04 11:06:12 得分 0
select distinct name
from cj t1
where (select count(*) from cj where name=t1.name and chengji>=80)=3Top
3 楼ado_jerry()回复于 2006-03-04 12:02:58 得分 0
呵呵~Top
4 楼cenlmmx(学海无涯苦作舟)回复于 2006-03-04 12:55:05 得分 0
select distinct name from cj
minus
select distinct name from cj where chengji<80Top
5 楼zzwind5(★★★★★)回复于 2006-03-04 18:15:34 得分 0
1. 所有客都>80分就是不存在<80分的课
select distinct name from cj t1 where not exists (
select 1 from cj t2 where t1.name=t2.name and t2.chengji<80);
2. 用表关联
select distinct t1.name from cj t1, cj t2, cj t3
where t1.name=t2.name and t1.name=t3.name and t1.xuke='语文' and t1.chengji>80
and t2.xuke='数学' and t2.chengji>80 and t3.xuke='语文' and t3.chengji>80Top
6 楼skying1(1年轻而流浪)回复于 2006-03-04 20:45:00 得分 0
cenlmmx(学海无涯苦作舟 )
高手呀。Top
7 楼hezhudaozhai(九袋长老)回复于 2006-03-04 23:49:29 得分 0
select * from (
select name,sum(decode(xueke,'语文',chengji,0)) as yuwen,
sum(decode(xueke,'数学',chengji,0)) as shuxue,
sum(decode(xueke,'英语',chengji,0)) as yingyu
from cj
group by name)
where yuwen>80 and shuxue>80 and yingyu>80
Top
8 楼Jeremyzhou(Jeremy)回复于 2006-03-05 09:51:05 得分 0
cenlmmx(学海无涯苦作舟)
高 实在是高Top
9 楼fandy81(fandy)回复于 2006-03-06 09:57:24 得分 0
先找到各门成绩最低分高于80人的名字就可以了呀!
select name
from cj
group by name
having min(chengji) >80
Top
10 楼jylsj21(jylsj21)回复于 2006-03-06 11:35:01 得分 0
楼上的查询效率会不会比其他人高?Top




