数据库查询面试题
table: test
field: student,score(考试分数),classroom(班级)
1,请查出得分超过60分的学生有20个以上的 班级
2,得分在60分以上的学生最到的班级
------解决方案--------------------select classroom,count(*) from test
where score> 60
group by classroom
having count(*)> 20
select * from (select classroom,count(*) from test
where score> 60
group by classroom
order by count(*) desc)
where rownum=1
------解决方案--------------------select classroom from
(select student,score,classroom from test where score> 60)
group by classroom having count(student)> =20;
select classroom,class from(
select classroom,count(classroom) class from
(select student,score,classroom from test where score> 60)
group by classroom) where class in(
select max(class) from(
select classroom,count(classroom) class from
(select student,score,classroom from test where score> 60)
group by classroom));
第二个语句我写的太麻烦了...不知道怎么简化下好,但和楼上那样用ROWNUM是不是会在有2个以上班级达到60分以上人数并列最多的时候不能全部查出来..
------解决方案--------------------那就这样写
select * from (select a.belongorg,count(*),rank() over (order by count(*) desc) as a
from user_info a
group by belongorg
order by count(*) desc)
where a=1
------解决方案--------------------呵呵
------解决方案--------------------哈哈,都是牛人。.