SQL 面试题目及答案

SQL 面试题目及答案

By Lee - Last updated: 星期五, 五月 31, 2013 Leave a Comment

学生成绩表(stuscore):
姓名:name     课程:subject     分数:score     学号:stuid
张三     数学     89     1
张三     语文     80     1
张三     英语     70     1
李四     数学     90     2
李四     语文     70     2
李四     英语     80     2

1.计算每个人的总成绩并排名(要求显示字段:姓名,总成绩)

答案:select name,sum(score) as allscore from stuscore group by name order by allscore

2.计算每个人的总成绩并排名(要求显示字段: 学号,姓名,总成绩)

答案:select distinct t1.name,t1.stuid,t2.allscore from  stuscore
t1,(    select stuid,sum(score) as allscore from stuscore group by
stuid)t2 where t1.stuid=t2.stuidorder by t2.allscore desc

3.计算每个人单科的最高成绩(要求显示字段: 学号,姓名,课程,最高成绩)

答案:select t1.stuid,t1.name,t1.subject,t1.score from stuscore
t1,(select stuid,max(score) as maxscore from stuscore group by stuid)
t2 where t1.stuid=t2.stuid and t1.score=t2.maxscore

4.计算每个人的平均成绩(要求显示字段: 学号,姓名,平均成绩)

答案:select distinct t1.stuid,t1.name,t2.avgscore from stuscore
t1,(select stuid,avg(score) as avgscore from stuscore group by stuid)
t2 where t1.stuid=t2.stuid

5.列出各门课程成绩最好的学生(要求显示字段: 学号,姓名,科目,成绩)

答案:select  t1.stuid,t1.name,t1.subject,t2.maxscore from stuscore
t1,(select subject,max(score) as maxscore from stuscore group by
subject) t2 where t1.subject=t2.subject and t1.score=t2.maxscore

6.列出各门课程成绩最好的两位学生(要求显示字段: 学号,姓名,科目,成绩)

答案:select distinct t1.*  from stuscore t1 where t1.id in (select top 2
stuscore.id from stuscore where subject = t1.subject order by score
desc) order by t1.subject

7.统计如下:学号     姓名     语文     数学     英语     总分     平均分

答案:select stuid as 学号,name as 姓名,sum(case when subject=’语文’ then
score else 0 end) as 语文,sum(case when subject=’数学’ then score else 0
end) as 数学,sum(case when subject=’英语’ then score else 0 end) as
英语,sum(score) as 总分,(sum(score)/count(*)) as 平均分from stuscoregroup by
stuid,name order by 总分desc

8.列出各门课程的平均成绩(要求显示字段:课程,平均成绩)

答案:select subject,avg(score) as avgscore from stuscore group by subject

9.列出数学成绩的排名(要求显示字段:学号,姓名,成绩,排名)

答案:

declare @tmp table(pm int,name varchar(50),score int,stuid int)
insert into @tmp select null,name,score,stuid from stuscore where subject=’数学’ order by score desc
declare @id int
set @id=0;
update @tmp set @[email protected]+1,[email protected]
select * from @tmp

oracle:
select  DENSE_RANK () OVER(order by score desc) as
row,name,subject,score,stuid from stuscore where subject=’数学’order by
score desc
ms sql(最佳选择)
select (select count(*) from stuscore t1
where subject =‘数学‘ and t1.score>t2.score)+1 as row ,stuid,name,score
from stuscore t2 where subject =‘数学‘ order by score desc

10.列出数学成绩在2-3名的学生(要求显示字段:学号,姓名,科目,成绩)

答案:select t3.*  from(select top 2 t2.*  from (select top 3
name,subject,score,stuid from stuscore where subject=‘数学‘ order by score
desc) t2 order by t2.score) t3 order by t3.score desc

11.求出李四的数学成绩的排名

答案:

declare @tmp table(pm int,name varchar(50),score int,stuid int)insert
into @tmp select null,name,score,stuid from stuscore where subject=’数学’
order by score descdeclare @id intset @id=0;update @tmp set
@[email protected]+1,[email protected] * from @tmp where name=’李四’

12.统计如下:课程     不及格(0-59)个     良(60-80)个     优(81-100)个

答案:select subject, (select count(*) from stuscore where score<60
and subject=t1.subject) as 不及格,(select count(*) from stuscore where
score between 60 and 80 and subject=t1.subject) as 良,(select count(*)  
from stuscore where score >80 and subject=t1.subject) as 优 from
stuscore t1 group by subject

13.统计如下:数学:张三(50分),李四(90分),王五(90分),赵六(76分)

答案:

declare @s varchar(1000)set @s=”select @s
[email protected]+’,’+name+‘(‘+convert(varchar(10),score)+’分)’ from stuscore where
subject=’数学’ set @s=stuff(@s,1,1,”)print ‘数学:’[email protected]

14.计算科科及格的人的平均成绩

答案: select distinct t1.stuid,t2.avgscore  from stuscore t1,(select
stuid,avg(score) as avgscore from stuscore   group by stuid  )
t2,(select stuid from stuscore where score<60 group by stuid) t3
where t1.stuid=t2.stuid and t1.stuid!=t3.stuid;
select 
name,avg(score) as avgscore   from stuscore s  where (select sum(case
when i.score>=60 then 1 else 0 end) from stuscore i where  i.name=
s.name)=3   group by name

时间: 2024-10-13 16:01:01

SQL 面试题目及答案的相关文章

算法之美一书附录中笔试面试题目参考答案

探秘算法世界,求索数据结构之道:汇集经典问题,畅享编程技法之趣:点拨求职热点,敲开业界名企之门.<算法之美--隐匿在数据结构背后的原理>全文目录."45个算法"目录."22个经典问题目录",请见如下链接: 算法之美隆重上市欢迎关注(更有三重好礼) http://blog.csdn.net/baimafujinji/article/details/50484348 *本书附录中的笔试面试题目主要从我之前的系列博文<常见C++笔试题目整理(含答案)&g

SQL面试题目

Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表 问题:1.查询“001”课程比“002”课程成绩高的所有学生的学号:select a.S#from (select s#,score from SC where C#=’001′) a,(select s#,score from SC where C#=’002′) bwhere a.score>b.scor

Web前端面试题目及答案汇总

前端新人在面试前都比较焦虑,担心回答不上面试官的问题,也担心自己紧张,其实这都是心理没底的表现,今天和大家分享web前端开发常见面试题及答案,希望可以帮助即将面试的前端同学顺利通过面试. HTML/CSS部分 1.什么是盒子模型? 在网页中,一个元素占有空间的大小由几个部分构成,其中包括元素的内容(content),元素的内边距(padding),元素的边框(border),元素的外边距(margin)四个部分.这四个部分占有的空间中,有的部分可以显示相应的内容,而有的部分只用来分隔相邻的区域或

SQL 面试题目汇总

1.触发器的作用? 答:触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的.它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化.可以联级运算.如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发. 2.什么是存储过程?用什么来调用? 答:存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次.如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快.可以

33条C#、.Net经典面试题目及答案

1, 请你说说.NET中类和结构的区别? 答:结构和类具有大体的语法,但是结构受到的限制比类要多.结构不能申明有默认的构造函数,为结构的副本是又编译器创建和销毁的,所以不需要默认的构造函数和析构函数.结构是值类型,所以对结构变量所做的改变不会影响其的原值,而类是应用类型,改变其变量的值会改变其原值.申明结构用Struck关键字,申明类用class关键字,向方法传递结构是时是通过值传递的,而不是通过引用.与类不同,结构的实例化可以不使用New关键字.类可以实现接口. 2, 死锁的必要条件?怎么克服

33条C#和.NET经典面试题目及答案

1. .NET中类和结构的区别? 答:结构和类具有大体的语法,但是结构受到的限制比类要多. a. 结构不能有默认的构造函数,因为结构的副本是用编译器创建和销毁的,所以不需要默认的构造函数和析构函数. b. 结构是值类型, 所以对结构变量所做的改变不会影响其原值,而类是引用类型,改变其变量的值会改变其原值. c. 声明结构用Struct关键字,声明类用class关键字,向方法传递结构是通过其值传递的,而不是通过引用. d. 与类不同,结构的实例化可以不使用New关键字.类可以实现接口. 2. 死锁

一道SQL面试例题 if...else 与聚集函数

晚上回来,同学说面试遇到了一个SQL面试题目,自己做了一下,总结总结. 题目如下: 下面是产品数据表(产品id,颜色col,数量num),其中每种产品有1~2种颜色. 求每种产品各颜色的数量差值(对于只有一种颜色的保留产品总数) 解法如下: 1.先求出每种产品各颜色的数量 这个不难,直接使用group by 就可以啦.SQL语句如下: 1 select id,col,sum(num) total from chanpin group by id,col 结果: 2.求每种产品各颜色的数量差值(对

一道SQL语句的面试题目

今天一个朋友发了一道题目给我,我把此题目贴出来,以便大伙看看,共同研究研究. 题目: 已知关系模式: 1.s (sno,sname) 学生关系.sno 为学号,sname 为姓名2.c (cno,cname,cteacher) 课程关系cno 为课程号,cname 为课程名,cteacher 为任课教师3.sc(sno,cno,scgrade) 选课关系.scgrade 为成绩要求实现如下5 个处理:1.找出没有选修过“李明”老师讲授课程的所有学生姓名2.列出有二门以上(含两门)不及格课程的学生

直通大厂:Java必考系列——JVM经典面试题目(含答案)

Q1:类的加载机制是什么?答:类加载到内存中主要有5个阶段,分别为①加载:将Class文件读取到运行时数据区的方法区内,在堆中创建Class对象,并封装类在方法区的数据结构的过程.②验证:主要用于确保Class文件符合当前虚拟机的要求,保障虚拟机自身的安全,只有通过验证的Class文件才能被JVM加载.③准备:主要工作是在方法区中为类变量分配内存空间并设置类中变量的初始值.④解析:将常量池中的符号引用替换为直接引用.⑤初始化:主要通过执行类构造器的<client>方法为类进行初始化,该方法是在