大学生春季运动会的数据库,保存了比赛信息的三个表如下:
运动员 sporter(运动员编号 sporterid,姓名name,性别 sex,所属系号 department),
项目 item(项目编号 itemid,名称 itemname,比赛地点 location), 成绩 grade(运动员编号 id,项目编号 itemid,积分 mark)。
用SQL语句完成在“体育馆”进行比赛的各项目名称及其冠军的姓名

SELECT i.itemname, s.name
FROMgrade g,(SELECT itemid iid, MAX(mark) maxFROMgradeWHEREitemid IN (SELECT itemidFROMitemWHERElocation = '体育馆')GROUP BY itemid) temp,item i,sporter s
WHEREg.itemid = temp.iidAND g.mark = temp.maxAND temp.iid = i.itemidAND s.sporterid = g.sporterid;  

注:这道题需要注意:在使用group by的时候, select后面字段要么出现在group by当中要么包含在聚合函数里面, 常见的聚合函数有sum()、max()、min()、avg()、count()....

Mysql中表student_table(id,name,birth,sex),插入如下记录:
('1003' , NULL , '2002-05-20' , '男');
('1004' , '张三' , '2000-09-06' , '男');
('1005' , '李四' , '2001-12-01' , '女');

('1006' , NULL , '2001-12-02' , '女');

修改name字段为NULL的记录,是男生时设置name='男生姓名',是女生时设置name='女生姓名'

update student_table set name  = ( case when sex = '男' then '男生姓名' when sex = '女' then '女生姓名' end) where name is null ;

注:知识点在于熟悉语法:case when .. then when ... then ... else ... end .其中case和end必不可少。

已知职员表employee(eno,ename,gender,birthday,salary),现有一张E表,表结构与职员表一致,要求将E表中没有在职员表中出现的女职员添加到职员表中

INSERT INTO employee(eno,ename,gender,birthday,salary)SELECT eno,ename,gender,birthday,salsryFROM EWHERE E.gender='女' and NOT EXISTS(SELECT * FROM employeeWHERE employee.eno=E.eno)

在MySQL中,现有评分表evaluate(包含班级编号cid和分数point字段),有班级表grade(包含班级编号cid等字段), 查询evaluate 表中有没有班级均分大于等于80分的,如果存在,则查询显示grade表按cid由大到小排名的前五行记录

SELECT * FROM gradeWHERE EXISTS (SELECT cid,AVG(point) AS avgFROM evaluate GROUP BY cidHAVING avg>=80)ORDER BY grade.cid DESC LIMIT 5 ;

注:知识点优先顺序必须是from-->where-->group by -->having --- >order by --> select,这里需要注意的是聚合函数和where一起使用,会出现错误, 一般都会用having替代

Mysql中表student_table(id,name,birth,sex),score_table(stu_id,subject_name,score),查询多个学科的总分最高的学生记录明细以及总分

select t1.*, sco from student_table inner join (select stu_id, sum(score) as sco from score_table group by stu_id order by sco desc limit 1) as score_T on student_table.id = score_T.stu_id;

知识点:有关MYSQL连接逻辑均在图内

在MySQL中,现有学生表Student(包含学号,学生姓名,出生年月,性别)。 查询该班级同名学生有几个人?

select count(Student.SId) from Student inner join (select Sname from Student group by Sname HAVING count(Sname) > 1) as s1 on s1.Sname = Student.Sname;
Select sum(t.q)  from (select count(Sname) q from student group by Sname having count(Sname)>1) t;

后面刷题都是在网上找到的

图解SQL面试题:经典50题 - 知乎

在MySQL中,现有学生表Student(包含学号,学生姓名,出生年月,性别),成绩表:score(学号,课程号,成绩)。 问有多少学生选了课程?

select count(*) from Student where SId in (select distinct(SId) from SC);

知识点:IN和exist的区别, 当表a数据更多是推荐用in, In会先查b再查a。 反之使用exist。 not exist和not in的区别, 更推荐使用not exist, 因为会走索引

查询两门以上不及格课程的同学的学号及其平均成绩

select Sid, avg(score) from SC where score < 60 group by Sid having count(Cid) > 2;

查询学生的总成绩并进行排名

select Sid, sum(score) as Stotal, RANK() OVER(ORDER BY sum(score) desc) ranking from SC group by SId order by Stotal desc ;

知识点:

RANK并列跳跃排名:并列即相同的值,相同的值保留重复名次,遇到下一个不同值时,跳跃到总共的排名。

DENSE_RANK并列连续排序:并列即相同的值,相同的值保留重复名次,遇到下一个不同值时,依然按照连续数字排名。

ROW_NUMBER连续排名:即使相同的值,依旧按照连续数字进行排名。

使用分段[10085]m,[85-70],[70-60],[<60]来统计各科成绩,分别统计:各分数段人数,课程号和课程名称

select Course.Cid,Course.Cname,sum(case when SC.score > 85 then 1 else 0 end) as '100-85',
sum(case when SC.score <= 85 and SC.score > 70 then 1 else 0 end) as '85-70',
sum(case when SC.score <= 70 and SC.score > 60 then 1 else 0 end) as '70-60',
sum(case when SC.score <= 60 then 1 else 0 end) as '<60' from Course right join SC on SC.Cid = Course.Cid
group by SC.Cid,Course.Cname;

数据库SQL笔试题目相关推荐

  1. 几道经典的SQL笔试题目(有答案)

    几道经典的SQL笔试题目(有答案) (1)表名:购物信息 购物人      商品名称     数量 A            甲          2 B            乙           ...

  2. 数据库SQL实战题目详解(全61题)---(41-61)部分

    题目来源:牛客网–<数据库SQL实战> https://www.nowcoder.com/ta/sql?page=0 题目答案为博主自写已通过运行,题目难度近似于阶梯上升,可根据自身情况分 ...

  3. SQL笔试题目分享(一)

    3.SQL 数据分析 某宝有一张订单表 ordr_list,共有三列:ordr_id(订单 id)-- bigint,uid(买家 id)-- bigint,create_time(下单时间)-- d ...

  4. SQL笔试经典50题及答案解析(题目1-10)

    前言 最近博主在准备数据分析岗位的笔试和面试,其中的考察重点就是SQL.听说练了这50道题目(题目和数据来源参考:互联网校招SQL笔试经典50题及答案解析),什么现场手撕SQL统统都不怕,我就赶紧来练 ...

  5. 数据库整理+SQL笔试2道

    数据库整理+SQL笔试2道 Mysql与Oracle区别: Oracle是大型数据库,而Mysql是中小型数据库: Mysql是开源的,而Oracle价格非常高: Oracle占内存大: 单引号的处理 ...

  6. SQL笔试经典50题及答案解析(题目21-30)

    前言 最近博主在准备数据分析岗位的笔试和面试,其中的考察重点就是SQL.听说练了这50道题目(题目和数据来源参考:互联网校招SQL笔试经典50题及答案解析),什么现场手撕SQL统统都不怕,我就赶紧来练 ...

  7. java ee 笔试题目,JSP经典笔试@题目(含答案)

    JSP经典笔试@题目(含答案) 更新时间:2017/2/5 19:25:00  浏览量:557  手机版 JSP综合测试笔试 1)在Java EE中,Servlet是在服务器端运行,以处理客户端请求而 ...

  8. 数据库oracle 笔试,数据库oracle笔试

    1. 数据库中使用update修改多个字段值的问题 经我在PL/SQL环境下调试,得出如下结论(scott/tiger 下的dept表): update dept set dname='yao', l ...

  9. php mysql笔试题_2017年最新PHP笔试题目及答案

    2017年最新PHP笔试题目及答案 为了帮助同学们面试PHP工程师,以下百分网小编整理的2017年最新PHP程序员笔试题目,希望对大家有所帮助,更多信息请关注应届毕业生网! 1.用php打印出前一天的 ...

最新文章

  1. java读取配置文件properties
  2. C#中的is、as及转换
  3. JAVA入门级教学之(方法递归)
  4. Bootstrap3 弹出提示插件的选项
  5. 基于MVC模式Struts框架研究
  6. SSL ×××和IPSec的主要区别
  7. join为什么每个字符都分割了 js_2019JS必看面试题
  8. 嵌入式linux ucgui,成功移植ucGUI到Linux上
  9. 2021年CSDN年度总结:生活总是焦虑与希望并存,流水要争先,靠的是绵绵不绝。
  10. 新版淘客订单API【需token】
  11. python excel数据处理教程pdf_python对excel操作详解.pdf
  12. SDH原理--2.SDH信号的帧结构
  13. 干货 | 互联网广告数据的匿名化方案研究
  14. 2.详解DEBUG模式
  15. No.2第一章 启航 | Flink 知其然,知其所以然
  16. speedoffice和office的区别
  17. 【Pygame】细致讲解开发Flappy Bird小游戏
  18. HTML基础教学课件,HTML基础课件.ppt
  19. Istio服务网格实践指南 学习笔记(二) Istio架构
  20. idea自动填充方法参数

热门文章

  1. python-爬取糗事百科段子
  2. macbook视频格式转换_‎Mac App Store 上的“一键视频格式转换器”
  3. matlab使用yalmip工具箱
  4. v-loalder是什么?
  5. bash与source
  6. Windows 安装dbserver
  7. 视频融合平台EasyCVR接入海康SDK时无法播放录像该如何解决?
  8. java remote desktop_Chrome Remote Desktop:让你在任意设备上远程连接Windows桌面
  9. Android安卓手机APP应用自有keystore签名证书怎么生成?
  10. 量子力学到底有多难?他用700多幅漫画,让孩子秒懂这个神奇世界!