sql面试题7.pdfVIP

  • 4
  • 0
  • 约1.49万字
  • 约 17页
  • 2017-06-10 发布于河南
  • 举报
sql面试题7

Sql常见面试题(总结) 1.用一条SQL语句 查询出每门课都大于80分的学生姓名 name kecheng fenshu 张三 语文 81 张三 数学 75 李四 语文 76 李四 数学 90 王五 语文 81 王五 数学 100 王五 英语 90 (1)select stu_name from stu_grade minus select stu_name from stu_grade g where g.grade= 80 (2)select distinct stu_name from stu_grade ou where not exists ( select 1 from stu_grade inn where ou.stu_name = inn.stu_name and inn.grade = 80 ) (3)select distinct t1.stu_name from stu_grade t1 where t1.stu_name not in ( select distinct t2.stu_name from stu_grade t2 where t2.grade=80 ) 2.学生表 如下: 自动编号 学号 姓名 课程编号 课程名称 分数 1 2005001 张三 0001 数学 69 2 2005002 李四 0001 数学 89 3 2005001 张三 0001 数学 69 删除除了自动编号不同,其他都相同的学生冗余信息 A: delete tablename where 自动编号 not in(select min(自动编号)from tablename group by 学 号,姓名,课程编号,课程名称,分数) ★:(1)在 where 的左右都不能使用“组函数”; (2)一般来说,都可以使用exists 代替 in ,如果在 in 的条件中使用了“组函数”查 询到值,那么就不能使用exists 来代替 in 了,就像本题 一个叫department的表,里面只有一个字段name,一共有4条纪录,分别是a,b,c,d,对应 四个球对,现在四个球对进行比赛,用一条sql语句显示所有可能的比赛组合. 你先按你自己的想法做一下,看结果有我的这个简单吗? 答:select a.name, b.name from team a, team b where a.name b.name 请用SQL语句实现:从TestDB数据表中查询出所有月份的发生额都比101科目相应月份的 发生额高的科目。请注意:TestDB中有很多科目,都有1-12月份的发生额。 AccID:科目代码,Occmonth:发生额月份,DebitOccur:发生额。 数据库名:JcyAudit,数据集:Select * from TestDB 答:select a.* from TestDB a ,(selectOccmonth,max(DebitOccur)Debit101ccurfrom TestDBwhereAccID=101group by Occmonth) b where a.Occmonth=b.Occmonth and a.DebitOccurb.Debit101ccur ******************************************************************************* ***** 面试题:怎么把这样一个表儿 year month amount 1991 1 1.1 1991 2 1.2 1991 3 1.3 1991 4 1.4 1992 1 2.1 1992 2 2.2 1992 3 2.3 1992 4 2.4 查成这样一个结果 year m1 m2 m3 m4 1991 1.1 1.2 1.3 1.4 1992 2.1 2.2 2.3 2.4 答案一、 select year, (select amount from aaa m where month=1

文档评论(0)

1亿VIP精品文档

相关文档