首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

「SQL面试题库」 No_106 查找成绩处于中游学生

学生 student_id 在测验 exam_id 得分为 score. 成绩处于中游学生是指至少参加了一次测验, 且得分既不是最高分也不是最低分学生。...一个 SQL 语句,找出在所有测验中都处于中游学生 (student_id, student_name) 。 不要返回从来没有参加过测验学生。...返回结果表按照 student_id 排序查询结果格式如下。...对于测验 2: 学生 1 既获得了最高分, 也获得了最低分。 对于测验 3 和 4: 学生 1 和 4 分别获得了最低分和最高分。 学生 2 和 5 没有在任一场测验获得了最高分或者最低分。...因为学生 5 从来没有参加过任何测验, 所以他被排除于结果表。 由此, 我们仅仅返回学生 2 信息。

16920

查找成绩处于中游学生

学生 student_id 在测验 exam_id 得分为 score. 成绩处于中游学生是指至少参加了一次测验, 且得分既不是最高分也不是最低分学生。...一个 SQL 语句,找出在所有测验中都处于中游学生 (student_id, student_name)。 不要返回从来没有参加过测验学生。返回结果表按照 student_id 排序。...查询结果格式如下。...对于测验 2: 学生 1 既获得了最高分, 也获得了最低分。 对于测验 3 和 4: 学生 1 和 4 分别获得了最低分和最高分。 学生 2 和 5 没有在任一场测验获得了最高分或者最低分。...因为学生 5 从来没有参加过任何测验, 所以他被排除于结果表。 由此, 我们仅仅返回学生 2 信息。

46410
您找到你想要的搜索结果了吗?
是的
没有找到

产品经理从0开始学SQL(二)

举个例子来看下查询语句该怎么。...学生名字段是name,因此我们应该把name字段放在select ,表名是t_user,语句: select name from t_user 查询结果: name 张三 李四 陈红 2、找出性别是女性所有学生信息...因为一个专业有多名学生,所以查询专业名称不止一个。为了去除重复,我们可以在select后面加上关键词 distinct。这样就可以去除重复记录了。...select 字段名可以更改,这样在查询结果显示就是更改后属性名。 表名也可以更改,更改表名在多表查询时非常有用。 语法: old-name as new-name。...查询结果: 姓名 张三 李四 陈红 8、字符串运算。sql使用一英文单引号或双引号来表示字符串。比如name="张三"。字符串是大小写敏感,比如"Comp" 和 "comp"是不相等

45930

图解SQL面试题:经典topN问题

表内容如下: 问题:查找每个学生成绩最高2个科目 【解题思路】 1.看到问题中要查“每个”学生最高成绩。还记得我们之前课程里讲过吗?当有“每个”出现时候,就要想到是要分组了。...这里是“每个学生”,结合表结构,是按学生“姓名”来分组。 2.将表按学生姓名分组后,把成绩按降序排列,排在最前面的2个就是我们要“成绩最高2个科目”。...这种情况就可以用子查询,也就是把第一步得到查询结果作为一个表,sql语句如下: select * from ( select *, row_number() over (...2.在筛选过程,非常容易因为子查询问题报错,本题也考察了对子查询熟练运用。 3.本题间接考察了sql语句执行顺序熟悉程度。 【举一反三】 经典topN问题:每组最大N条记录。...这类问题涉及到“既要分组,又要排序情况,要能想到用窗口函数来实现。

29910

MySQLconcat()、concat_ws()、group_concat()函数

#--那是因为第12条数据page字段为空,根据一个字段为空结果就为NULL理论推导出 查询最后一条记录为NULL!...语法:group_concat( distinct 要连接字段 order by 排序字段 asc/desc )注意: 括号是可选分析: 通过使用distinct可以排除重复值;如果希望结果进行排序...需求3: 这里再给小伙伴深入一个问题 那么我们现在要查询出 语文、数学、外语 三门课最低分,还有哪个学生? 现在应该怎么呢?...#--这里我们可以使用in() 包含+ 子查询方式来 根据上面SQL结果进行匹配包含查询 学生名 SELECT stuName,score,course from student where...2.where 后面跟一个圆括号 里面是 分数和科目两个字段,用来匹配in() 里面的子查询结果 可能这里有些新手小伙伴并没有见过这样 现在应该清楚了方法2#--我们也可以用以下SQL语句来实现

4K30

concat()、concat_ws()、group_concat()函数使用

#--那是因为第12条数据page字段为空,根据一个字段为空结果就为NULL理论推导出 查询最后一条记录为NULL!...distinct可以排除重复值;如果希望结果进行排序,可以使用order by子句;separator是一个字符串值,缺省为一个逗号。...需求3: 这里再给小伙伴深入一个问题 那么我们现在要查询出 语文、数学、外语 三门课最低分,还有哪个学生? 现在应该怎么呢?...#--这里我们可以使用in() 包含+ 子查询方式来 根据上面SQL结果进行匹配包含查询 学生名 SELECT stuName,score,course from student where...where 后面跟一个圆括号 里面是 分数和科目两个字段,用来匹配in() 里面的子查询结果 可能这里有些新手小伙伴并没有见过这样 现在应该清楚了 [方法2] #--我们也可以用以下SQL语句来实现

88030

程序员零基础速成SQL

例如,有这么一个业务查询任务:在限定学生表学号小于等于6一批学生查询每门课最高成绩(最高成绩低于70分课程不显示),然后根据课程最高成绩降序排列取前两条记录。查询SQL如下: ?...where子句是原始表做筛选 having子句是对分层汇总之后结果做筛选 回顾我们上一篇讲过例子:在限定学生表学号小于等于6一批学生查询每门课最高成绩(最高成绩低于70分课程不显示...然后我们用group by和max(score)聚合函数实现了课程进行分层,求出每门课最高成绩,为了聚合之后结果作限制,我们用having子句只展示最高分数大于等于70记录。...待连接表信息 2.内连接 内连接即通过某个字段进行等值匹配从而将两个表联合起来,比方说我们需要获取两张表一个学号对应姓名和成绩,使用就是inner join,结果如下: ?...左连接指的是将左表作为基准表,保留表所有行,将右表根据某个字段进行等值匹配,如果找不到右表匹配行则显示为NULL。结果如下: ?

1.5K10

JAVASQL查询语句大全,select多表查询,各种查询

select name,sal,bonus from emp where sal>3000 and bonus<600; 排序查询 查询结果进行排序使用 order by关键字。...order by 排序列 XXX asc 升序 order by 排序列 XXX desc 降序 – emp表中所有员工薪资进行升序(从低到高)排序,显示姓名、薪资。...(1~) (2)一个学生只能属于一个班级(11),两者合并结果还是1 因此,班级表和学生表是一关系 对于一两张表,可以在多一方添加列,保存一一方主键,从而保存两张表之间关系...一一 (1)一个班级对应一个教室(1~1) (2)一个教室也只对应一个班级(11),两者合并结果还是11 因此,班级表和教室表是一关系 对于一一关系两张表,可以在任意一张表添加列,...保存另一张表主键,从而保存两张表之间关系 多多 (1)一个学生对应多个老师(1~) (2)一个老师也对应多个学生(1*),两者合并结果是* 因此,学生表和老师表是多关系 对于多关系

2.2K30

java开发师生评教小程序学生老师评价老师班级评价打分题单选题意见框系统选课系统

管理员可以创建不同评教模板(单选题0分或者10分,打分题0-10分,意见框-不计分),管理员可以把不同模板分配给不同课程和老师,学生老师(课程)评价后计算百分制结果(60以下为差,60-70及格...,70-80良,80-90好90分以上是优秀),老师也可以对班级进行评价打分根据评分排序,可以双方相互输入建议或者意见。...11)退出账号管理员web端1)院系管理:添加,编辑,分页,删除,根据名称查询2)专业管理:添加,编辑,分页,删除,根据名称查询3)班级管理:添加,编辑,分页,删除,根据名称查询4)学生管理:添加,编辑...分配评 教模板,删除已分配模板,添加上课学生,删除学生7)评教模板管理:添加,编辑,分页,删除,根据名称查询,添加问题(单选题,打分题, 意见框)禁用,启用8)查看学生老师评价:分页,根据姓名教师编号教师名称课程名称院系专业班级查询..., 根据评分排序9)查看老师班级评价:分页,根据姓名教师编号教师名称课程名称院系专业班级查询根据评分排序10)登录11)退出12)修改密码部分截图:图片源码2.0+选课在此基础增加了学生端选课,

51300

python技术面试题(七)--SQL语句

,使用group_concat()来获取分组中指定字段集合 # 根据数据成绩进行分组,获取每个分数中学生编号 mysql> select c_math,group_concat(c_student_id...# 从学生以性别进行分组,然后选出女生分组,并展示小组中所有的名字 mysql> select c_gender,group_concat(c_name) from t_student group...2.左连接查询 语法: select * from 表1 left join 表2 on 表1.列 运算符 表2.列 查询结果根据左表数据进行连接,如果右表没有满足条件记录,则连接空值。...3.1标量子查询(子查询返回结果一个数据(一行一列)) # 查询班级中年龄大于平均年龄学生信息 mysql> select * from t_student where c_age > (select...(子查询返回结果是一列(一列多行)) # 主查询 where 条件 in (列子查询) # 查询出所有学生所在班级班级名称 mysql> select c_name from t_class where

63430

Java补充之MySQL入门必备知识

; 使用表达式查询进行运算 在select 语句中可使用as 语句 练习 -- select 语句使用 -- 统计每个学生总分 SELECT `name`, (chinese+english...多表查询练习 在默认情况下:当两个表查询时,规则 从第一张表,取出一行和第二张表每一行进行组合,返回结果[含有两张表所有列]....ecshop各个类别,价格最高商品 -- 查询 商品表 -- 先得到 各个类别,价格最高商品 max + group by cat_id, 当做临时表 -- 把子查询当做一张临时表可以解决很多很多复杂查询...,是利用where子句两张表或者多张表,形成笛卡尔积进行筛选,根据关联条件,显示所有匹配记录,匹配不上,不显示。...(已commit) 幻读(phantom read):同一查询在同一事务多次进行,由于其他提交事务所做插入操作,每次返回不同结果集,此时发生幻读。

1.4K110

MySQL数据库篇---对数据库,数据库中表,数据库中表记录进行添修删查操作---保姆级教程

子句 查询学生李四成绩 查询名字叫李四同学,并且英语成绩大于90分---条件查询 查询姓李学生信息---模糊查询 查询英语成绩是69,75,89学生信息---范围查询 查询英语成绩大于等于75分并且成绩为...注意: 一个实体对应一个表,一个实体属性对应一个字段 java基本变量类型mysql类型: 约束: 约束作用: 保证数据完整性 单表约束分类: 主键约束: primary key...like '李_' :名字必须是两个字,必须姓李 like '李%': 必须是姓李学生,李字后面可以跟任意个字符 like '%四': 名字以四结尾 like '%王%': 只要名称包含这个王字即可...再按照英语成绩升序排序 逗号分隔条件:按照多个条件进行排序,总是先执行第一个条件,再执行第二个条件,即第一个条件都满足时,走第二个条件 select *from exam order by chinese...desc,english asc;//按照多个条件进行排序,总是先执行第一个条件,再执行第二个条件,即第一个条件都满足时,走第二个条件 查询姓李学生信息,按照英语成绩降序 select *from

3.6K20

MySQL面试题

数据库实体映射基数有多少种,分别是什么 映射表示了表与表之间联系,一般通过外键来体现这种映射关系 一一:例如一个人对应一张身份证,一张身份证对应一个人,两者可以放同一张表多:例如一个班级对应多个学生...多一:与一多相反,多个学生是同一个班级多:例如每个学生要学习多门课程,每门课程有多个学生进行学习 一般多关系需要转换成1多关系,那么就需要创建中间表来转换,在中间表存放学生主键...视图可以修改数据吗 视图中数据和结构是建立在表查询基础上,所以它可以像物理表一样使用,其更新,即对实际数据库原始数据表进行更新,但是视图主要用于查看数据,不建议使用视图作更新,特别是视图数据来自多个表时...e)根据业务数据发送频率,定期重新生成或重新组织索引,进行碎片整理 查询时减少使用*返回全部列,不要返回不需要列 a)频繁搜索列 b)经常用作查询列 c)经常排序,分组列 d)经常用作连接列...查询学生学习情况(要求显示学生姓名,年龄,课程名称,成绩,任课老师按学生编号排序) SELECT Sname,sage,cname,score,tname FROM student s JOIN

21960

Excel xlookup使用指南

4) 区间查询 如下图所示,F:G列是评分标准,60以下不及格,80以下及格等,需要根据该评分标准,C列成绩计算评级。...而后者折半查找,只需要3次就可以了。数据量越大后者效率优势就越高——不过后者要求查询范围需排序处理。 7) 横向查询 如下图所示,A:D列是数据明细,需要根据F1指定科目查询对应成绩。...本例查找范围是单列(A列),结果范围是B:D列,因此返回B:D列多列结果。 9) 交叉表查询 如下图所示,A:D列是数据明细,需要根据F列姓名,查询对应电话、特长和得分等多列数据。...12) 动态表查询 如下图所示,一张工作簿包含了2017年、2018年、2019年等多张工作表,现在需要根据B1单元格指定工作表名称,在其中查询A列相关人名得分。...B:B”)) 公式使用INDIRECT函数根据B1单元格指定工作表名称构建引用范围,其中查找范围是指定表A列,结果范围是指定表B列。

2.6K10

SQL数据分析实战:好用窗口函数

说明 ROW_NUMBER 为表每一行分配一个序号,可以指定分组(也可以不指定)及排序字段(连续且不重复) DENSE_RANK 根据排序字段为每个分组每一行分配一个序号。...排名值相同时,序号相同,序号没有间隙(1,1,1,2,3这种) RANK 根据排序字段为每个分组每一行分配一个序号。...排名值相同时,序号相同,但序号存在间隙(1,1,1,4,5这种) 我们要获取各科目排名第一学生得分,就可以再加个条件判断即可,需要注意这里用到了子查询。...查询结果如下: NTILE(2) NTILE(n)在数据分析应用较多,比如由于数据量大,需要将数据平均分配到n个并行进程分别计算,此时就可以用NTILE(n)对数据进行分组(由于记录数不一定被...语文成绩表 比如,我们要查询在截止每个时间语文最高分,可以这样操作: SELECT *, MAX(得分) OVER ( ORDER BY 时间 ) AS MAX_ FROM 语文成绩单 查询结果如下

68420

图解sql面试题:如何查找重复数据?

【题目】 编写一个SQL查询,查找学生表中所有重复学生名。 【解题思路】 1.看到“重复”关键字眼,首先要用分组函数(group by),再用聚合函数计数函数count()给姓名列计数。...【解题步骤】 方法一 (1)创建一个辅助表,将姓名列进行行分组汇总 select 姓名, count(姓名) as 计数 from 学生表 group by 姓名; (2)选出辅助表中计数大于1姓名...计数 from 学生表 group by 姓名 ) as 辅助表 where 计数 > 1; 结果: 方法二 这时候有的同学可能会想,为什么要这么麻烦创建一个查询,不能用这个语句(将count放到...select 姓名 from 学生表 group by 姓名 where count(姓名) > 1; 如果我们运行下这个sql语句,会报下面的错误,问题出在哪里呢?...(如果不清楚,可以系统看下我之前课程《从零学会SQL:汇总分析》) 如果要对分组查询结果进行筛选,可以使用having子句。

20610

mysql查询、子查询及连接查询

having与where类似,可以筛选数据,where后表达式怎么,having后就怎么 where针对表列发挥作用,查询数据...having查询结果列发挥作用,筛选数据 #查询本店商品价格比市场价低多少钱,输出低200元以上商品 select goods_id,good_name...,shop_price desc; #上面的查询结果每个栏目的第一行商品就是最贵商品 #把上面的查询结果理解为一个临时表[存在于内存]【子查询...//以上查询结果在本例的确能正确输出结果,但是,如果把tbb值改为10以查询结果b值就是10了,因为tab也是10,所以union后会被过 滤掉一个重复结果,...>,<等算术、逻辑运算符]【连接完成后,可以 当成一张新表来看待,运用where等查询】 #取出价格最高五个商品,并显示商品分类名称 select goods_id

12.3K80

MySQL查询进阶相关sql语句

一般情况下, 与分组结合使用, 单独使用没有意义 -- 总数 count(*) 括号写信号或者字段名, 最终计算结果相同, 都是统计查询结果行数 -- 查询学生总数 select count(...(name) from students group by gender having count(*) > 2; 分页 但数据量过大时, 用limit显示结果进行分组 -- limit start,...语句中嵌入另一个select语句, 那么被嵌入select语句称之为子查询语句, 而最外层select语句称之为主查询语句 -- 标量子查询: 子查询返回结果一个数据(一行一列) -- 查询大于平均年龄学生...: 子查询返回结果是一列(一列多行) -- 查询还有学生在班所有班级名字 (先在学生查找所有班级, 返回是一列多行班级id) select name from classes...where id in (select cls_id from students); -- 行级子查询: 子查询返回结果是一行(一行多列) -- 查找班级年龄最大,身高最高学生

3.8K20

C# .NET面试系列十一:数据库SQL查询(附建表语句)

SELECT nameFROM tableAGROUP BY nameHAVING MIN(fenshu) > 80;-- 法2:使用了子查询,首先在子查询找出所有分数不低于80分学生姓名,然后在外层查询找出不在这个子查询结果学生姓名...-- 使用 SUM 计数结果进行求和。-- 使用 CONCAT 将胜负计数结果连接成字符串,形成最终结果。...,这个序号根据指定排序规则来确定。...具体来说:-- PARTITION BY deptno: 意味着窗口函数会根据 deptno 列进行分区,也就是说,每个不同 deptno 值会形成一个分区。...-- AS row_num: 这部分是将窗口函数结果命名为 row_num,作为一个列名。-- 因此,整个语句作用是为每个部门内员工按照工资从高到低进行排序,并为每个排名结果分配一个行号。

10210
领券