讲师sql测试题(一)

1、 有3个表如下:
Student 学生表(id(自增),学号,姓名,性别,年龄,组织部门)
Course 课程表 (编号,课程名称)
Sc 选课表(学号,课程编号,成绩)
1)写一个sql语句,查询选修了‘计算机原理’的学生学号和姓名
2)写一个sql语句,查询‘周星驰’同学选修了的课程名字
3)写一个sql语句,查询选修了5门课程的学生学号和姓名
4)写一个sql语句,学生表中有id不同其他字段相同的记录(脏数据),保留最新的数据记录(删除脏数据)。

 答案:1)方案一:select s.stuno, s.stuname from student s left join (select sc.stuno, c.cname from course c left join sc sc on c.cid = sc.cid) ccon s.stuno = cc.stuno and cc,cname = '计算机原理'方案二:select s.stuno, s.stuname from student s, sc sc, course c where s.stuno = sc.stuno and sc.cid = c.cid and c.cname = '计算机原理'2)select c.cname from student s, sc sc, course c where s.stuno = sc.stuno and sc.cid = c.cid and s.stuname = '周星驰' (可以使用left join)3)select s.stuno, s.stuname, count(sc.cid) from student s, sc sc where s.stuno = sc.stuno group by s.stuno, s.stuname having count(sc.cid) >= 54) select distinct stuno , stuname, sex, age, deptname, max(id) from studentgroup by stuno , stuname, sex, age, deptname

2、现有三个表表结构主要字段如下:
学生表 student:
S_id int //学生ID
S_name varchar2 //学生姓名
课程表 class :
C_id int //课程id
C_name varchar2 //课程名称
选课表 chosen_class
Id int //选课id
S_id int //学生id
C_id int //课程id
Grade int //成绩
请给出以下sql语句:
1)没有选修课程名称为“C1”的学生姓名
2)列出每门课程名称和平均成绩,并按照升序排序
3)选了2门课以上的学生姓名

 答案:1)select * from student s where s.S_id not in (select S_id from chosen_class cc where cc.C_name= ‘C1’)2)select c.C_name, avg(cc.Grade) from class c, chosen_class cc where c.C_id = cc.C_id group by c.C_name ORDER BY avg(cc.Grade)3) select s.S_name, count(cc.C_id) from student s, chosen_class cc where s.S_id = cc.S_id group by s.S_name having count(cc.C_id) > 2

3、实际应用
Student(S#, Sname, Sage, Ssex)学生表
Course(C#, Cname, T#) 课程表
SC(S#, C#, score) 成绩表
Teacher(T#, Tname) 教师表
问题:
1)查询所有同学的学号和平均成绩
2)查询姓“李”的老师的信息;
3)查询所有同学的学号、姓名、选课数、总成绩;
4)查询各科成绩前三名的记录:(不考虑成绩并列情况)

 答案:1)select s.S#, avg(SC.SCORE) from Student s, SC SC where s.S# = SC.S# group by s.S#2)select * from Teacher where Tname like '李%'3)select s.S#, s.Sname, count(sc.C#), sum(sc.score) from Student s, SC sc where s.S# = sc.S# group by s.S#, s.Sname4)select * from (select t.*, rownum rn from (select sc.C#, s.* from Student s, SC sc where s.S# = sc.S# group by sc.C#, s.*) t where rownum < 4 )where rn >=1

4、 假设顾客购物表customer_shopping 结构如下:
Customer commodity amount
A 甲 2
B 乙 4
C 丙 1
A 丁 2
B 丙 5
……
请写sql查询所有购入商品为两种或两种以上的购物人记录

 答案:1)select cs.Customer, count(cs.commodity) from customer_shopping cs group by cs.Customer having count(cs.commodity) >=2

5、 假设学生成绩表student_score 结构如下:
Name course score
张青 语文 72
王华 数学 72
张华 英语 81
张青 物理 67
张燕 物理 70
张青 化学 76
……
请写sql查询出所有“张”姓学生中平均成绩大于75分的学生信息:

 答案:1)select ss.Name, avg(ss.score) from student_score where ss.Name like '张%' group by ss.Name having avg(ss.score) > 75
6、 假设表team 结构如下:(中电普华)ID(number) Name(varchar2)1 a2 b3 b4 a5 c6 C
请写出sql语句执行一个删除操作,当Name 列上有相同时,只保留ID这列上值小的记录。
例如:删除后的结果如下:ID(number) Name(varchar2)1 a2 b3 c
答案:1)delete from team where id not in (select min(id) from team group by name)
7、有一张表,里面有3个字段;语文,数学,英语。 其中有3条记录分别表示语文70分,数学80分,英语58分,请用一条sql语句查询出这
三条记录并按以下条件显示出来
大于或等于80表示优秀,大于或等于60表示及格,小于60分表示不及格。(轩睿电子商务)显示格式:语文 数学 英语及格 优秀 不及格
 答案:1)select case when 语文>=80 then '优秀' when 语文>=60 then '及格' else '不及格' end 语文 ,case when 数学>=80 then '优秀' when 数学>=60 then '及格' else '不及格' end 数学 ,case when 英语>=80 then '优秀' when 英语>=60 then '及格' else '不及格' end 英语 from student
8、拷贝表(拷贝数据,源表名:a 目标表名:b)(轩睿电子商务)
    答案:
1)insert into b(a, b, c) select d,e,f from a;
9、有两个表tab12和tab13,均有key和value两个字段,如果tab13的key在tab12中也有,就把tab13的value换为tab12中对应的value(轩睿电子
商务)
 答案:1)update tab13 set value=(select value from tab12 where tab12.key=tab13.key) (有问题)
10、已知数据库表a和b,两个表共享id,写出a和b关联查询的sql(怀谷科技)
答案:1)select * from a left join b on a.id = b.id 或者 select * from a a1, b b1 where a1.id = b1.id
11、存在employee结构如下Emp_id number(4) not null --员工编号Emp_name varchar2(20)not null --员工姓名Dept_id number(2) --部门编号Job_id varchar2(30) --岗位编号Salary number(8,2) --薪水Emp_id Emp_name Dept_id Job_id salary0021 张三 001 001 120000022 李四 001 002 110000023 李磊 002 001 12000021 张三 001 001 120000024 全峰 003 021 8000
根据此表结构请写出sql完成如下要求:
1)请写出sql语句查询出工资高于9100的员工记录
2)列出每个部门的最高工资、最低工资、平均工资
3)列出超出每个部门平均工资的人的人员编号、姓名、工资和所在部门的平均工资
4)按照上述表结构请写出sql完成如下要求:上表中由于没有设置主键,导致存在重复记录(比如0021),请写出sql完成如下功能:删除
人员编号重复的记录
 答案:1)select * from employee where salary > 91002) select max(salary), min(salary), avg(salary) from employee group by Dept_id3) select e.Emp_id, e.Emp_name, e.salary, newe.sal from employee e left join (select e1.Dept_id,avg(salary) sal from employee e1 group bye1.Dept_id) newe on e.Dept_id = newe.Dept_id where e.salary > (select avg(salary) from employee group by Dept_id)4)
12、有3个表 S, C, SC (中创慧谷)S (SNO, SNAME) 代表 (学号,姓名)C(CNO, CNAME, CTEACHER) 代表(课号,课名,教师)SC(SNO, CNO, SCGRADE) 代表(学号,课号,成绩)
问题:
1)找出没选过“黎明”老师的所有学生的姓名
2)列出2门以上(含2门)不及格学生的姓名及平均成绩。
3)既学过1号课程又学过2号课所有学生的姓名
 答案:1)select SnamefromS where Sno not in ( select Sno fromSC where Cno in (selectcno fromC where Cteacher='黎明') )2) SELECT S.SNO, S.SNAME, AVG(SC.SCGRADE)FROM S, SCWHERE S.SNO = SC.SNO AND S.SNO IN(SELECT SC.SNO FROM SCWHERE SC.SCGRADE< 60GROUP BY SC.SNOHAVING COUNT(SC.CNO) >= 2)GROUP BY S.SNO, S.SNAME3) SELECT S.SNO,S.SNAMEFROM S,(SELECT SC.SNOFROM SC,CWHERESC.CNO=C.CNOANDC.CNAMEIN('1','2')GROUP BYSNOHAVINGCOUNT(DISTINCT CNO)=2)SCWHERES.SNO=SC.SNO
13、学生课程成绩表(瑞友科技)序号 学生id 课程id 课程成绩id sid cid Score1 1 1 50.52 1 1 60.53 1 2 89.54 1 3 705 2 1 706 2 3 737 3 2 72
1个人有多门课程,由于有补考,有人1门课程又多次成绩;
计算:1)每个人有多少门课程,倒序;
2)计算每个学生的所有课程的平均成绩,倒序(补考的按最后成绩算)
答案:1)select sid, count( distinct cid) from score group by sid ORDER BY COUNT(CID)
2)select sid, avg(score) from score where id in (select max(id) from score group by cid,sid) group by sid order by avg(score)
14、表User(辰睿科技)id Name1 zhangsan2 lisi3 lisi4 wangwu5 wangwu…… ……
10000条数据,每10条数据必有重复name;写一句sql去重复数据,id正序,重复数据留第一条;展示id,name;
如上表:去掉后剩下数据id为1,2,4……;
 答案:1)select id,name from t_user where id in (select min(id) from t_user group by name)
15、现在有下列三张表,请根据条件写sql语句.(中科软)学生信息表:student (student_id, student_name, sex, age);课程信息表:course(course_id, course_name);成绩信息表:score(student_id, course_id, score);
1)查询年龄大于14岁的前10名学生信息
2)查出学生id等于“001”的学生所有课程得分
3)查出所有课程得分都大于80分的女生姓名列表;
答案:1)select * from sudent where age > 14 and rownum < 11 order by student_id
2) select c.course_name, s.score from course c left join score s on c.course_id = s.course_id where s.student_id = '001'
3) select stu.student_name from student stu,
(select student_id,min(score) from score group by student_id having min(score) > 80) e
where stu.student_id = e.student_id
16、现在有下列学生表,请根据条件写出sql语句.(金科教育)
学生信息表:student(student_id, student_name, sex, age, createdatetime,createUser, modifydatetime, modifyUser)
1)统计出各个月份入学人员总数;
2)查询出最近1个月入学人员信息;
答案:1)select
to_char(createdatetime, 'MM') 月,
count(id) 入学人数
from student
group by
to_char(createdatetime, 'MM')
2)select * from student where createdatetime > add_months(sysdate,-1)
--1.查询学生信息,分数低于60 的显示为差,

–60到80显示为良,
–80-100显示为优。

select id,stuname,stuage,case
when stuscore < 60 then '差' when stuscore >=60and stuscore < 80 then '良' when stuscore >=80 and stuscore <100 then '优' end stuscore from t_stu

–2.将学生中名字 带有 “张”的学生,并且分数大于80分的同学信息
–备份到一张新表中

create table t_stus as
(select * from t_stu where stuname like '%张%' and stuscore > 80)

1、 查询公司名称中包含’金科’,并且入职日期在2018年以前的人数(10分)

select count(u.name) from b_user u,b_gs g where u.gsid=g.gsid and  g.gsName like '%金科%' and to_char(inDate,'yyyy') < '2018'
select count(u.name) from b_user u,b_gs g where u.gsid=g.gsid and  g.gsName like '%金科%' and u.indate< to_date('2018','yyyy')

2、查询2018年每个月过生日的联系人数量(10分)

select to_char(birthday,'MM'),count(birthday) from b_user where to_char(birthday,'yyyy') = '2018' group by to_char(birthday,'MM')

写出查询每个账户的登陆成功、失败次数的sql ?查询效果如下(10分)
ID USER_NAME SUCCESS FAIL
1 张三 1 1
2 李四 0 1

select t2.user_id,user_name,fail,success from t_userinfo ti,
(select user_id,
(select count(status) from t_login_log t1 where t1.user_id=t.user_id and status=1 ) as fail,
(select count(status) from t_login_log t1 where t1.user_id=t.user_id and status=0 ) as success from t_login_log t) t2 where ti.id=t2.user_id group by t2.user_id,user_name,fail,success

–1. 写一个sql语句,查询姓王的并且运送方式为空运的已完结的托运信息。(10分)

select * from t_tuoyuninfo s,t_file t where s.sfileid=t.sfid and s.sname like '%王%' and s.status=4

–2. 写一个sql语句,托运表中有id 不同其他字段相同的记录(脏数据),
–保留最新的数据记录(id最大的那条为最新)(删除脏数据)。(10分)

第一种:delete from t_tuoyuninfo t
where (t.sname,t.sdanwei,t.sphone,t.saddr,t.stype,t.sfileid,t.status) in
(select t.sname,t.sdanwei,t.sphone,t.saddr,t.stype,t.sfileid,t.statusfrom t_tuoyuninfo t group by t.sname,t.sdanwei,t.sphone,t.saddr,t.stype,t.sfileid,t.statushaving count(*) > 1)
and rowid not in (select max(rowid) from t_tuoyuninfo t
group by t.sname,t.sdanwei,t.sphone,t.saddr,t.stype,t.sfileid,t.status having count(*)>1)
第二种:
delete student2 where sid not in (
select max(t.sid) from student2 t group by t.sname,t.no,t.noname,t.score)

1:写出查询每个账户的登陆成功、失败次数的sql ?查询效果如下(10分)

select t2.user_id,user_name,fail,success from t_userinfo ti,
(select user_id,
(select count(status) from t_login_log t1 where t1.user_id=t.user_id and status=1 ) as fail,
(select count(status) from t_login_log t1 where t1.user_id=t.user_id and status=0 ) as success from t_login_log t) t2 where ti.id=t2.user_id group by t2.user_id,user_name,fail,success

2:查询出每年的登录成功次数(10分)

select to_char(TIME,'yyyy'),count(STATUS) from T_LOGIN_LOG where STATUS=0 group by to_char(TIME,'yyyy')
  1. Sql语句(20分)
    student(s_id, s_name) 代表 (学号,姓名)
    sub_class(c_id, c_name, c_teacher) 代表(课号,课名,教师)
    choosen_class(s_id, c_id, grade) 代表(学号,课号,成绩)

–1)找出没选过“黎明”老师的所有学生的姓名(10分)

select s_name from student where s_id not in
(select s.s_id from student s,sub_class c,choosen_class cc where s.s_id=cc.s_id and c.c_id=cc.c_idand c.c_teacher like '%黎明%')

–2)列出2门以上(含2门)不及格学生的姓名及平均成绩。(10分)

 select t.s_name,avg(t.grade) from(select s.s_name,cc.grade from student s,sub_class c,choosen_class cc where s.s_id=cc.s_id and c.c_id=cc.c_id  and cc.grade <60
) t group by t.s_name having count(*)>=2

–请写sql查询出所有“张”姓学生中平均成绩大于75分的学生信息

select a.name,avg(a.score) from student_score a where a.name like '张%' group by a.name
having avg(a.score)>75
student (student_id, student_name, sex, age);
create table b1_student(student_id   number(4),student_name   varchar2(50),sex number(4), age number(4))
--课程信息表: course(course_id, course_name);
create table b1_course(course_id   number(4),course_name   varchar2(50))
--成绩信息表: score(student_id, course_id, score);
create table b1_score(student_id   number(4),course_id   number(4),score number(4))
--请查出所有课程得分都大于80分的女生姓名列表?
select r.student_name 姓名 from b1_student r,b1_course b,b1_score c where r.student_id=c.student_id and b.course_id=c.course_id
and r.sex=2 and score>80 group by r.student_name having count(r.student_name)=
(select count(course_name ) from b1_course)
--1)请写出sql语句查询出工资高于9100的员工记录(5分)select * from employee where salary >9100--2)列出每个部门的最高工资、最低工资、平均工资(5分)select dept_id, max(salary),min(salary) ,avg(salary) from employee group by dept_id--3)列出超出(包含)每个部门平均工资的人的人员编号、姓名、工资和所在部门的平均工资(10分)select a.emp_id 人员编号,a.emp_name 姓名,a.salary 工资,b.d 所在部门的平均工资 from employee a ,
(select e.dept_id f,avg(e.salary) d from employee e group by e.dept_id) b
where a.dept_id=b.f and a.salary>=b.d

价值20k的sql题(java中级)相关推荐

  1. 大数据技术之Hive SQL题库-中级

    第1章 环境准备 1.1 用户信息表 1)表结构 user_id(用户id) gender(性别) birthday(生日) 101 男 1990-01-01 102 女 1991-02-01 103 ...

  2. [剑指offer]面试题第[47]题[JAVA][礼物的最大价值][动态规划]

    [问题描述][中等] [解答思路] 1动态规划 动态规划流程 第 1 步:设计状态 f(i, j)f(i,j) 为从棋盘左上角走至单元格 (i ,j)(i,j) 的礼物最大累计价值 第 2 步:状态转 ...

  3. 我想做东哥的兄弟!北京-京东-Java中级【面试真题】

    在积极备战大厂的同时,我们也要关注大厂的一些实际面试情况和难易程度,感受一下大厂的氛围,系列文章持续更新,有好的面试题的伙伴们也可以私信博主,我们共同努力!当然了,文章中有什么不合适的地方也请大家指正 ...

  4. 如何面试Java中级开发(16k)试题讲解和Java学习

    面试题: HashMap底层实现原理,红黑树,B+树,B树的结构原理,volatile关键字,CAS(比较与交换)实现原理 Spring的AOP和IOC是什么?使用场景有哪些?Spring事务,事务的 ...

  5. Java中级开发面试题

    面试题: HashMap底层实现原理,红黑树,B+树,B树的结构原理,volatile关键字,CAS(比较与交换)实现原理 Spring的AOP和IOC是什么?使用场景有哪些?Spring事务,事务的 ...

  6. 杭州中国移动java待遇_【中国移动杭州研发中心Java面试】移动杭研社招java中级面试-看准网...

    移动杭研社招java中级面试 移动杭研的面试比较紧凑,一个上午就面完了.到了后先在前台登记,填写个人信息,和党性测试,党性测试有点像以前点政治题,知道不知道随意填了下,前台妹子说这个不要紧的.然后一面 ...

  7. 2021年100题Java春招面试题

    2021年100题Java春招面试题 开发技术类 1. 为什么现在函数式编程这么越来越受关注?为什么函数式编程重要?什么时候适用函数式语言? 函数式编程有什么好处,和面向对象比有什么好处,有什么坏处. ...

  8. java中级职称考试试题_Java中级开发工程师笔试题及答案2016

    Java中级开发工程师笔试题及答案2016 java中级工程师考试试题你做了吗?下面随yjbys小编一起来看看最新Java中级开发工程师笔试题及答案,仅供考生参考! 1) 描述Web Service的 ...

  9. 0725(016天 多态复习 java中级-抽象类01)

    0725(016天 多态复习.java中级-抽象类01) 每日一狗(田园犬西瓜瓜) 主标题 文章目录 0725(016天 多态复习.java中级-抽象类01) 主标题 1. 多态续 1.1 补充知识 ...

最新文章

  1. http header头设置反向代理不缓存
  2. sql 判断分钟是偶数数据_使用SQL交换座位(奇偶数的用法)
  3. 数据预处理|关于标准化和归一化的一切
  4. python遗传算法之geatpy学习
  5. 罗马数字转换python_罗马数字转整数 python
  6. python 灰度图转rgb rgb转灰度之间的变化
  7. android 360度视频播放器,Android开发VR实战之播放360度全景视频
  8. 倾斜摄影测量(无人机影像)的三维建模和DSM,DOM的生成(挖坑)
  9. matlab 产生高斯噪声和高斯白噪声方法
  10. Sublime Text 中文版安装和插件安装
  11. Matlab 将计算结果制作成 gif 动画
  12. 京东商品搜索架构设计
  13. 非淡泊无以明志, 非宁静无以致远
  14. 假定主存地址位数为32位,按字节编址,主存和cache之间采用直接映射方式,主存块大小为1个字,每字32位,写操作时采用直写(Write Throght)方式,则能存放32K字数据的cache的总容量
  15. 在手机上如何模拟计算机考试,2018年计算机一级考试精选模拟题库/手机版:计算机基础及MS Office应用...
  16. python贺卡文字_圣诞贺卡制作
  17. Cefsharp实现拼多多 后台 多开,免登录
  18. dockerfile中运行 touch app.jar的作用
  19. python 学习 红楼梦字频统计 DAY17
  20. LSTM公式的按元素乘和加

热门文章

  1. ScriptManager控件的使用
  2. 使用xlsx.js完成Excel批量数据导入
  3. 数字逻辑学习:布尔代数。
  4. 达芬奇调色技术:调色快速入门基础
  5. 计算机论文中画图,论文:浅谈电脑绘画的利和弊
  6. 如何隐藏excel公式?如何取消隐藏?
  7. 如何彻底删除流(冰)氓(雪)软(传)件(奇)
  8. Netty 入门教程
  9. TP屏幕适配--驱动篇
  10. Web中间件常见漏洞总结