`
mamaoyuan625
  • 浏览: 173292 次
  • 性别: 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数据库常见面试题

    Sql常见题目 为管理岗位业务培训信息,建立3个表: ...SC ( S#,C#,G ) S#,C#,G 分别代表学号、所选修的课程编号、学习成绩 1. 使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名 --实现代码:

    sql面试题- (学生表_课程表_成绩表_教师表)

    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&gt;b.score and a.s#=b.s#...

    .NET高级工程师面试题之SQL篇

     这确实是一个真实的面试题,琢磨一下吧!知识不用,会丢掉,我太依赖各种框架和dll了,已经忘记了基本的东西。有多久没有写过SQL了,我已经不记得了。  已知表信息如下:  Department(depID, depName),...

    t-SQL面试题-2

    经典SQL面试题 题目1 问题描述: 为管理岗位业务培训信息,建立3个表: S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄 C (C#,CN ) C#,CN 分别代表课程编号、课程名称 SC ( S#,C#,G ) S#,C#...

    mysql面试题

    mysql面试题,经典sql语句.

    C++/Java/C#/SQL 面试题 答案

    C++ java C# SQL 面试题 答案 asp .net Oracle MySqL。绝对够全面。想要更多 邮箱hoho_w@yeah.net

    SQL面试题详细介绍

    题描述: 为管理岗位业务培训信息,建立3个表: S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄 C (C#,CN ) C#,CN 分别代表课程编号、课程名称 SC ( S#,C#,G ) S#,C#,G 分别代表学号、所...

    经典SQL面试题

    对学生表,课程表,成绩表,教师表进行操作的50道查询语句。

    整理mysql、oracle数据库相关 笔试面试题,主要为了应对面试过程中遇到的sql题目

    整理mysql、oracle数据库相关 笔试面试题,主要为了应对面试过程中遇到的sql题目 、.学生表 Student(SID,Sname,Sage,Ssex) --SID 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 2.课程表 Course(CID,...

    sql面试题(学生表_课程表_成绩表_教师表)1

    2.为student表和score表增加记录向student表插入记录的INSERT语句如下:INSERT INTO student VALUES( 901,'

    java面试题大全(2012版)

    20. xxx公司的sql面试 108 21、注册Jdbc驱动程序的三种方式 109 22、用JDBC如何调用存储过程 109 23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、...

    java面试题V2.0-sql部分(1)1

    第二题:查询平均成绩大于60分的同学的学号和平均成绩 第三题:查询所有同学的学号、姓名、选课数、总成绩 第六题:查询学过“011”并且也学过编号“002”课程的

    数据库表习题

    介于这个题 学生成绩管理有三个表,学生跟课程是一对多的关系; S(Sno,Sname)学生关系,Sno为...1、用sql语句求出所有3科以上不及格的学生姓名及各科成绩(包含3科)。 2、选出没选任课老师“高老师”的学生 的描述

    数据库面试基础题常考题 低积分 福利版

    按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示:学生ID,数据库,企业管理,英语,有效课程数,有效平均分; 查询不同老师所教不同课程平均分从高到低显示;

    程序员简历、面试技巧.ppt

    笔试:以JAVA基础题,SQL语句,javascript等基础为主,或是写几个简单的小程序 面试: 其一,答题准备。一般来说,你的初试是由人力资源部来进行的,他们会就你的学历、个性、能力、价值观和过去的成绩等问一些常规...

    MFC下的面试系统

    MFC 下的基于SqlServer2000数据库,可以随意存取数据库里面的题目,里面的视频录像还未实现(请谅解),带有评分,试题录入,成绩查询,更换皮肤功能,最小化支持托盘功能,适合初学MFC。

    Java面试宝典-经典

    20. xxx公司的sql面试 108 21、注册Jdbc驱动程序的三种方式 109 22、用JDBC如何调用存储过程 109 23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、...

    java面试宝典2012

    各种java面试题集,面试前必备哦, 1. Java基础部分 7 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 8 2、Java有没有goto? 8 3、说说&和&&的区别。 8 4、在JAVA中如何跳出当前的多重嵌套...

Global site tag (gtag.js) - Google Analytics