1.select s.学号,s.姓名
from 学生表 s
where
not exist (select 1
from 选课表 k2,学生表 s2
where k2.学号=s2.学号 and s2.姓名='张三'
and not exists (select 1 from 选课表 k where k.学号=s.学号 and k.课程=k2.课程)
)
2、select s.学号,s.姓名
from 学生表 s ,选课表 k
where k.学号 *= s.学号
group by s.学号,s.姓名
having sum(case when 成绩 <=60 then 1 else 0) >2 or sum(成绩) is null
3、
select 授课教师,课程名,count(*) 学生
from 课程表 k,选课表 s
where k.课程号=s.课程号
group by 授课教师,课程名
having count(*) =
(select top 1 count(*) from 课程表 k2,选课表 s2
where k2.课程号=s2.课程号
and k2.授课教师=k.授课教师
group by 授课教师,课程名
order by count(*) desc
)
from 学生表 s
where
not exist (select 1
from 选课表 k2,学生表 s2
where k2.学号=s2.学号 and s2.姓名='张三'
and not exists (select 1 from 选课表 k where k.学号=s.学号 and k.课程=k2.课程)
)
2、select s.学号,s.姓名
from 学生表 s ,选课表 k
where k.学号 *= s.学号
group by s.学号,s.姓名
having sum(case when 成绩 <=60 then 1 else 0) >2 or sum(成绩) is null
3、
select 授课教师,课程名,count(*) 学生
from 课程表 k,选课表 s
where k.课程号=s.课程号
group by 授课教师,课程名
having count(*) =
(select top 1 count(*) from 课程表 k2,选课表 s2
where k2.课程号=s2.课程号
and k2.授课教师=k.授课教师
group by 授课教师,课程名
order by count(*) desc
)
最多一行啊,Too Simple 哈哈select 授课教师,课程名,count(*) 学生
from 课程表 k,选课表 s
where k.课程号=s.课程号
group by 授课教师,s.课程号,课程名
having s.课程号=
(select top 1 s.课程号 from 课程表 k2,选课表 s2
where k2.课程号=s2.课程号
and k2.授课教师=k.授课教师
group by 授课教师,课程名
order by count(*) desc
)
from 课程表 k,选课表 s
where k.课程号=s.课程号
group by 授课教师,s.课程号,课程名
having s.课程号=
(select top 1 s.课程号 from 课程表 k2,选课表 s2
where k2.课程号=s2.课程号
and k2.授课教师=k.授课教师
group by 课程名
order by count(*) desc
)
好理解
from 课程表 k,选课表 s
where k.课程号=s.课程号
group by 授课教师,s.课程号,课程名
having s.课程号=
(select top 1 s.课程号 from 课程表 k2,选课表 s2
where k2.课程号=s2.课程号
and k2.授课教师=k.授课教师
group by 授课教师, s.课程号
order by count(*) desc
)
我就说中文字段名不好!
是啊,如果把表名、字段名都改为a、b、c之类的,用时可缩短一半以上。
可惜公司的Money很少,不然就挖你 ^-^
http://community.csdn.net/Expert/topic/3238/3238322.xml?temp=.9951898