数据分析sql面试必会6题经典_经典的SQL语句面试题「建议收藏」

数据分析sql面试必会6题经典_经典的SQL语句面试题「建议收藏」2015-11-1506:30:02阅读(383)Student(S#,Sname,Sage,Ssex)学生表Course(C#,Cname,T#)课程表SC(S#,C#,score)成绩表Teacher(T#,Tname)教师表问题:1、查询“001”课程比“002”课程成绩高的所有学生的学号;selecta.S#from(selects#,scorefromSCwhe…

大家好,又见面了,我是你们的朋友全栈君。

2015-11-15 06:30:02

阅读( 383 )

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′) b

where a.score>b.score and a.s#=b.s#;

2、查询平均成绩大于60分的同学的学号和平均成绩;

select S#,avg(score)

from sc

group by S# having avg(score) >60;

3、查询所有同学的学号、姓名、选课数、总成绩;

select Student.S#,Student.Sname,count(SC.C#),sum(score)

from Student left Outer join SC on Student.S#=SC.S#

group by Student.S#,Sname

4、查询姓“李”的老师的个数;

select count(distinct(Tname))

from Teacher

where Tname like ‘李%’;

5、查询没学过“叶平”老师课的同学的学号、姓名;

select Student.S#,Student.Sname

from Student

where S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname=’叶平’);

6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;

select Student.S#,Student.Sname

from Student,SC

where Student.S#=SC.S# and SC.C#=’001′and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#=’002′);

7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;

select S#,Sname

from Student

where S# in

(select S#

from SC ,Course ,Teacher

where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname=’叶平’ group by S# having count(SC.C#)=(select count(C#) from Course,Teacher where Teacher.T#=Course.T# and Tname=’叶平’));

8、查询所有课程成绩小于60分的同学的学号、姓名;

select S#,Sname

from Student

where S# not in (select Student.S# from Student,SC where S.S#=SC.S# and score>60);

9、查询没有学全所有课的同学的学号、姓名;

select Student.S#,Student.Sname

from Student,SC

where Student.S#=SC.S#

group by Student.S#,Student.Sname having count(C#)

10、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;

select S#,Sname

from Student,SC

where Student.S#=SC.S# and C# in (select C# from SC where S#=’1001′);

11、删除学习“叶平”老师课的SC表记录;

Delect SC

from course ,Teacher

where Course.C#=SC.C# and Course.T#= Teacher.T# and Tname=’叶平’;

12、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分

SELECT L.C# 课程ID,L.score 最高分,R.score 最低分

FROM SC L ,SC R

WHERE L.C# = R.C#

and

L.score = (SELECT MAX(IL.score)

FROM SC IL,Student IM

WHERE IL.C# = L.C# and IM.S#=IL.S#

GROUP BY IL.C#)

and

R.Score = (SELECT MIN(IR.score)

FROM SC IR

WHERE IR.C# = R.C#

GROUP BY IR.C# );

13、查询学生平均成绩及其名次

SELECT 1+(SELECT COUNT( distinct 平均成绩)

FROM (SELECT S#,AVG(score) 平均成绩

FROM SC

GROUP BY S# ) T1

WHERE 平均成绩 > T2.平均成绩) 名次, S# 学生学号,平均成绩

FROM (SELECT S#,AVG(score) 平均成绩 FROM SC GROUP BY S# ) T2

ORDER BY 平均成绩 desc;

14、查询各科成绩前三名的记录:(不考虑成绩并列情况)

SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数

FROM SC t1

WHERE score IN (SELECT TOP 3 score

FROM SC

WHERE t1.C#= C#

ORDER BY score DESC)

ORDER BY t1.C#;

15、查询每门功成绩最好的前两名

SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数

FROM SC t1

WHERE score IN (SELECT TOP 2 score

FROM SC

WHERE t1.C#= C#

ORDER BY score DESC )

ORDER BY t1.C#;

补充:

已经知道原表

year salary

——————

2000 1000

2001 2000

2002 3000

2003 4000

解:

select b.year,sum(a.salary)

from salary a,salary b

where a.year<=b.year

group by b.year

order by b.year;

在面试过程中多次碰到一道SQL查询的题目,查询A(ID,Name)表中第31至40条记录,ID作为主键可能是不是连续增长的列,完整的查询语句如下:

方法一:

select top 10 *

from A

where ID >(select max(ID) from (select top 30 ID from A order by ID ) T) order by ID

方法二:

select top 10 *

from A

where ID not In (select top 30 ID from A order by ID)

order by ID

分享给朋友:

亲~ 如果您有更好的答案 可在评论区发表您独到的见解。

您想查看更多的信息:

面试题

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/153432.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java应用结构规范[通俗易懂]

    Java应用结构规范[通俗易懂]简介:在Java程序开发中,命名和应用分层无疑是广大后端同胞的两大“痛点”,本文提供一种基于领域模型的轻量级应用分层结构设计,供大家参考。下面按分层结构、分层明细、调用关系、各层规范和通用代码工具展开介绍。作者|阿卓来源|阿里技术公众号序言在Java程序开发中,命名和应用分层无疑是广大后端同胞的两大“痛点”,本文提供一种基于领域模型的轻量级应用分层结构设计,供大家参考。下面按分层结构、分层明细、调用关系、各层规范和通用代码工具展开介绍。一分层结构web(前端请求层)

    2022年8月16日
    4
  • 详解C/C++中volatile关键字「建议收藏」

    详解C/C++中volatile关键字「建议收藏」一、volatile介绍volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序:这段…

    2022年6月1日
    25
  • Windows Mobile 6 Professional SDK[通俗易懂]

    Windows Mobile 6 Professional SDK[通俗易懂]WindowsMobile6ProfessionalSDK Lotyong的WindowsMobile6ProfessionalSDKhttp://download.microsoft.com/download/f/2/3/f232f773-7edc-4300-be07-d3b76a5b3a91/Windows%20Mobile%206%20Professional%

    2022年7月12日
    13
  • Java中print、printf、println的区别 详解

    Java中print、printf、println的区别 详解Java中print、printf、println的区别详解printf主要是继承了C语言的printf的一些特性,可以进行格式化输出print就是一般的标准输出,但是不换行println和print基本没什么差别,就是最后会换行System.out.printf(“thenumberis:d”,t);参照JAVAAPI的定义如下:’d’整数

    2022年7月7日
    27
  • Java之Java特点

    Java之Java特点

    2021年7月21日
    60
  • SpringBoot跨域设置(CORS)「建议收藏」

    SpringBoot跨域设置(CORS)「建议收藏」目录什么是跨域跨域资源共享(CORS)1.简单请求2.非简单请求SpringBoot设置CORS1.配置过滤器CorsFilter2.实现接口WebMvcConfigurer3.使用注解@CrossOrigin什么是跨域请求url的协议、域名、端口三者有任意一个不同即为跨域。跨域问题是因为浏览器的同源策略的限制而产生的。同源:请求url的协议、域名、端口三者都相同即为同源(同一个域)。同源策略:同源策略(Sameoriginpolicy)是一种约定,他是浏览器最核心也最基本的安全

    2022年6月18日
    26

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号