`
mamaoyuan625
  • 浏览: 176918 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

sql关于求成绩的面试题

阅读更多
table如下,共有5个科目,所有的题目都必须用一条语句处理:
+---------+-------------+------+
| name    |lesson      |mark  |
+---------+-------------+------+
| John    | Math        | 60   |
| Mike    | Eng         | 70   |
| Mark    | History     | 80   |
+---------+-------------+------+

1.有一科不及格的学生名单

2.不及格科目超过2门的学生名单

3.所有科目都不及格的学生名单

4.总分前三的所有学生名单(包括并列)

5.各科成绩最高的所有学生名单(包括并列)
答案--分析 --脚本
create table te (
name char(20) ,
lesson char(20),
mark float
)


insert into te values('john','Math',60);
insert into te values('john','Eng',50);
insert into te values('john','HIstory',56);

insert into te values('Mike','Eng',51);
insert into te values('Mike','Math',59);
insert into te values('Mike','HIstory',55);

insert into te values('Mark','Eng',71);
insert into te values('Mark','Math',89);
insert into te values('Mark','HIstory',95);

insert into te values('mm','Eng',61);
insert into te values('mm','Math',79);
insert into te values('mm','HIstory',85);

insert into te values('f','Eng',51);
insert into te values('f','Math',69);
insert into te values('f','HIstory',95);
select *from te;
--1.有一科不及格的学生名单
--先求出 < 60的,然后分组 统计 在having
select name as c from te where mark <60 group by name having count(*)=1

--2.不及格科目超过2门的学生名单
select name from te where mark <60 group by name having count(*) =2;

--3.所有科目都不及格的学生名单
select name, count(lesson) from te where mark < 60
group by name
having count(lesson) =
(select count(distinct lesson) lesson from te)
--4.总分前三的所有学生名单(包括并列)
SQLServer:
select top 3 name ,sum(isnull(mark,0)) as s_sum from te group by name order by s_sum desc ;
MYSql:
select  name ,sum(ifnull(mark,0)) as s_sum from te group by name order by s_sum desc limit 0,3 ;
select *from te;
--5.各科成绩最高的所有学生名单(包括并列)
--先使用分组求出每科的 Max
--然后join on 就ok 了
select t.name,t.lesson,t.mark from te t join (
select lesson, max(isnull(mark,0)) l_max from te group by lesson) tl on t.mark = tl.l_max;
 注意:处理空值 sqlserver:isnull 
mysql :ifnull
oracle :nvl
分享到:
评论
2 楼 mamaoyuan625 2015-09-05  
lucane 写道
你好
--4.总分前三的所有学生名单(包括并列)
这种实现是不是有问题啊,并列的可能产生超过3条记录

你试一下就知道结果了
Mark Math 89
Mark HIstory 95
mm Math 79
f HIstory 95
mK HIstory 95
mK Eng 79
1 楼 lucane 2011-09-01  
你好
--4.总分前三的所有学生名单(包括并列)
这种实现是不是有问题啊,并列的可能产生超过3条记录

相关推荐

    经典sql面试题

    另一个经典的面试题是关于如何查询所有科目的成绩均及格的学员。这个问题涉及到多个表的连接查询以及条件筛选。 **题目要求** 题目要求查询出所有科目的成绩都高于60分的学生信息。 **数据库设计** 题目给出了一...

    sql面试题很详细的sql语句面试题

    SQL面试题详解 本资源旨在总结和详细解释SQL面试题中的各种问题和解决方案,并对每个问题进行了详细的解释和分析。 一、查询每门课都大于80分的学生姓名 问题:使用一条SQL语句查询出每门课都大于80分的学生姓名...

    sql面试题(适合软件测试)

    根据提供的文件内容,我们可以整理出以下几个SQL面试题及其解答,这些问题主要聚焦于SQL查询技巧、数据处理以及数据结构的理解。 ### 1. 查询每门课都大于80分的学生姓名 **题目描述**:给定一张成绩表,其中包含...

    50道SQL面试题

    ### SQL面试题解析 #### 题目1: 查询课程编号为001的成绩高于课程编号为002的学生学号。 ```sql SELECT a.S# FROM (SELECT S#, score FROM SC WHERE C# = '001') a, (SELECT S#, score FROM SC WHERE C# = '002') ...

    sql经典面试题

    根据提供的文件内容,我们可以整理出一系列与SQL相关的面试题及解答思路。这些题目涵盖了SQL的基础查询、数据处理、以及更高级的功能应用等多方面内容,非常适合准备数据库工程师面试的求职者进行练习。下面是针对每...

    常用的SQL面试题(SQL经典试题)

    本资源涵盖了常见的 SQL 面试题,涵盖了学生、课程、成绩、教师等多个方面,涉及到多表查询、子查询、分组、排序等多种 SQL 技术。本文将对每个问题进行详细解析,并提供相应的 SQL 语句。 问题 1:查询“001”课程...

    SQL经典面试题及答案

    ### SQL经典面试题解析 #### 1. 使用`GROUP BY`进行统计分析 **题目描述:** 假设有一个表格,记录了某段时间内的比赛结果(胜利或失败),如何编写SQL语句来统计每一天的胜利和失败次数? **示例数据:** - 日期...

    校招sql 面试题

    ### SQL面试题解析 #### 背景介绍 在IT行业的招聘过程中,SQL技术作为数据处理的核心工具之一,经常被用作考核应聘者能力的重要环节。对于即将步入职场的应届毕业生来说,掌握一定的SQL技能是必不可少的。下面将对...

    sql面试题精选实例

    【SQL面试题精选实例】 在SQL面试中,掌握各种查询技巧和高级操作是至关重要的。以下是一些典型的SQL面试问题及解题思路: 1、查询“001”课程比“002”课程成绩高的所有学生的学号: 这个问题通过子查询比较两个...

    SQL经典面试题

    ### SQL经典面试题解析 #### 1. 删除冗余记录 **题目描述:** 假设有一个表`table1`包含以下列:学号(自动编号)、姓名、性别和年龄。现在需要删除除了学号(自动编号)字段以外,其他字段都相同的冗余记录。 **...

    SQL经典面试题及答案 CASE

    《SQL经典面试题及答案解析》 SQL是Structured Query Language的缩写,是用于管理和处理关系数据库的标准语言。在面试中,SQL问题通常涉及到数据查询、聚合、分组、条件判断等多个方面,考察应聘者对数据库操作的...

    SQLServer面试题

    SQL Server 面试题 本文总结了 SQL Server 相关的知识点,涵盖了 SQL 语句的编写、查询优化、表合并、union 和 union all 的区别等内容。 一、查询优化 在 SQL Server 中,查询优化是非常重要的。通过编写高效的 ...

    2022年SQL数据库经典面试题笔试题.pdf

    以下将根据提供的面试题解析相关的SQL知识点: 1. **分组统计** 题目要求按日期统计胜利和失败的次数。三种解决方案都利用了`GROUP BY`来按照日期进行分组,并通过`CASE WHEN`语句计算胜利和失败的计数。方法1和2...

    sql模拟面试题.

    以上就是对这些SQL面试题的详细解答和相关知识点的扩展。在实际面试中,面试官可能会根据这些问题进一步测试候选人的能力,例如处理更复杂的数据关系、优化查询性能、理解索引作用等。熟悉SQL的语法、操作和优化技巧...

    经典sql面试题及答案

    在SQL面试中,掌握基本的查询技巧和理解复杂的联接操作是至关重要的。以下是对给定的SQL面试题目的详细解答: 1. **找出选修过李明老师讲授课程的所有学生姓名** - 步骤:首先,我们需要找到与李明老师关联的课程...

    SQL经典面试题-很有用

    以下是基于给定的面试题及其解决方案的详细解析: 1. **分组计数问题**: 这个问题旨在考察对`GROUP BY`、`CASE`语句以及聚合函数的理解。题目要求统计每天胜利和失败的次数。有三种不同的解决方案: - 第一种...

    SQL数据库面试题以及答案

    ### SQL数据库面试题知识点解析 #### 1. 查询成绩在001课程高于002课程的学生学号 **知识点:** - 子查询 - 表连接 - 使用别名简化查询 **解析:** 此题需要先分别获取001课程和002课程的成绩,并通过比较来找出...

    程序员sql面试题

    以下是对给定文件中提到的经典SQL面试题的深入解析,旨在帮助读者理解并掌握这些重要的SQL知识点。 ### 一、条件查询与多表联合查询 #### 题目1:查询“001”课程比“002”课程成绩高的所有学生的学号 此题涉及到...

    经典sql面试题附答案

    根据给定的SQL题目及其答案,我们可以总结出一系列重要的SQL知识点和技巧,这些知识点对于学习SQL及准备面试都非常有帮助。 ### 1. 比较两个不同表中的记录 **知识点**: 子查询和连接操作是解决此类问题的关键技术...

Global site tag (gtag.js) - Google Analytics