求一个不同班级人对应不同成绩等级的查询!

¥小添添¥ 2020-06-22 09:00:07
不同班级的同学,成绩对应不同等级,且不同等级的数量还不同,求一个查询方法,先感谢各位大神了。如1班分 90分优秀,80分良好,70中等,60分及格四挡,2班分,85分良好,60及格两档。
有表如下,简易的表,如果需要辅助列可以随便加的。
人员表
eid score did
人员的id 获得的分数 对应的班级id
1 90 1
2 80 1
3 72 1
4 90 2
5 80 2
6 72 2
等级表
id score title
班级id 分数 等级名称
1 90 优秀
1 80 良好
1 70 中等
1 60 及格
2 85 良好
2 60 及格
...全文
281 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
¥小添添¥ 2020-06-28
  • 打赏
  • 举报
回复
感谢各位,这个思路应该可行的。我去试下
吉普赛的歌 2020-06-28
  • 打赏
  • 举报
回复
USE tempdb
GO
IF OBJECT_ID('dbo.[emp]') IS NOT NULL 
	DROP TABLE dbo.[emp]
GO
CREATE TABLE dbo.[emp](
[eid] INT
,[score] INT
,[did] INT
)
GO
SET NOCOUNT ON
INSERT INTO dbo.[emp] VALUES(N'1',N'90',N'1')
INSERT INTO dbo.[emp] VALUES(N'2',N'80',N'1')
INSERT INTO dbo.[emp] VALUES(N'3',N'72',N'1')
INSERT INTO dbo.[emp] VALUES(N'4',N'90',N'2')
INSERT INTO dbo.[emp] VALUES(N'5',N'80',N'2')
INSERT INTO dbo.[emp] VALUES(N'6',N'72',N'2')
GO
IF OBJECT_ID('dbo.[lev]') IS NOT NULL 
	DROP TABLE dbo.[lev]
GO
CREATE TABLE dbo.[lev](
[did] INT
,[score] INT
,[title] NVARCHAR(10)	
)
GO
SET NOCOUNT ON
INSERT INTO dbo.[lev] VALUES(N'1',N'90',N'优秀')
INSERT INTO dbo.[lev] VALUES(N'1',N'80',N'良好')
INSERT INTO dbo.[lev] VALUES(N'1',N'70',N'中等')
INSERT INTO dbo.[lev] VALUES(N'1',N'60',N'及格')
INSERT INTO dbo.[lev] VALUES(N'2',N'85',N'良好')
INSERT INTO dbo.[lev] VALUES(N'2',N'60',N'及格')
------ 以上为测试表及测试数据 --------

SELECT emp.*,f.title
FROM emp OUTER APPLY (
	SELECT TOP 1 lev.title FROM dbo.lev WHERE emp.did=lev.did AND emp.score>=lev.score ORDER BY lev.score DESC
) AS f
/*
eid	score	did	title
1	90	1	优秀
2	80	1	良好
3	72	1	中等
4	90	2	良好
5	80	2	及格
6	72	2	及格
*/

向阳的花儿 2020-06-22
  • 打赏
  • 举报
回复
查询结果
向阳的花儿 2020-06-22
  • 打赏
  • 举报
回复
联合查询,取大于等级分数中最大的那个等级就可以了(按人分组,order by 等级分数降序,取第一个)
create table students(sid int ,score int,did int )
insert into students 
select 1,90,1
union 
select 2,80,1
union
select 3,72,1
union
select 4,90,2
union
select 5,80,2
union
select 6,72,2

 create table degres(id int ,score int,title varchar(20))
insert into degres
select 1,90,'优秀'
union 
select 1,80,'良好'
union 
select 1,70,'中等'
union 
select 1,60,'及格'
union 
select 2,85,'良好'
union 
select 2,60,'及格'

select a.sid,a.score,a.did,a.title from (
select s.*,d.title ,
row_number() over(partition by s.sid order by d.score desc) as n
from students as s
left join degres as d on s.did=d.id
where s.score>=d.score
)as a where n=1
《软件工程》课程设计 学生管理系统 系统概述: 1、架构分析 学生管理是学校管理中不可少的一部分。而基于B/S架构的学生管理系统是方 便学校管理。Web展示层的每个页面都可以直接对数据库进行访问,而不用过 多的实现数据库连接和操作接口。数据库是系统的最底层。数据访问模块包含 在Web展示层中。Web展示层通过数据库访问模块访问数据库。数据库访问模块 一般封装数据库的查询、添加、更新、删除等操作,同时还为Web展示层提供 访问数据库的接口。两层架构模式的各层功能: "层名 "功能描述 " "Web展示层 "系统最高层,向用户展示各种界面。用户通过界面对系统进行操作,并实 " " "现用户各种操作信息的添加、修改和删除。与数据库直接关联,其数据访 " " "问模块封装了对数据库的所有操作。 " "数据库 "数据库用来存储本系统所有数据。 " 2、主要模块 本系统包括5个模块:用户管理模块、班级管理模块、课程管理模块、选课管理 模块和成绩管理模块。 (1)、用户管理模块:主要功能是对用户属性和权限进行管理,是系统的 基础模块。由管理员添加的用户默认密码和用户名称相同,修改密码只能由本 人或在数据库中修改完成。 (2)、课程管理模块:管理员具有对课程的增加、删除和修改权限。课程 分为基础课、专业课和选修课3种类型。课程管理模块制约选课模块。管理员 在课程管理中添加课程信息后,学生才能进行选课。分配课程主要是制定该课 程的任课教师和授课班级(基础课才需要指定班级)。 (3)、选课管理模块:主要功能是删除和统计选课信息,既可对选修课程 进行管理,也可统计选修课人数,并根据学生选课时间决定最终选修此课的学 生。 (4)、成绩管理模块:管理员可以录入和统计学生成绩;学生可以自己查 询自己课程的名称、学分、成绩。当学生成绩不及格时,将无法获得本课程的 学分。 3、主要负责模块: 甄边梓:主体框架设计、学生数据库管理模块、选课管理模块、成绩管理 模块 张彩娟:登录权限验证、数据库与ASP.NET的连接、用户管理模块、课程管 理模块 1. 系统设计 2.1系统需分析 在该系统中主要对学生的基本信息、学生成绩等进行管理,系统主要功能如下 : 1) 学生信息管理:用来管理学生基本信息,包括查询、添加、修改和删 除。学生基本信息包括:学号、姓名、性别、出生年月、籍贯、班 级、学院。 2) 课程信息管理:一门课程有一个上课班级,也可能有几个上课班级, 因此课程信息里的授课教师是不确定的。课程信息管理包括:浏览 、查询、添加、修改和删除。 3) 成绩信息管理:用来管理学生成绩,包括浏览、查询、添加、修改和 删除。成绩基本信息包括自动编号、学生学号、上课班级号、课程 成绩、 4) 权限管理:对于不同层次的使用者应该开放不同的权限。 管理者:维护学生基本信息,管理院系、课程、成绩各种数据。 教师:可以录入学生成绩信息,查询学生基本和成绩统计信息。 学生:可以查询学生成绩信息和成绩统计信息。 2.2数据库需分析: 学生管理系统的要是要准确快捷的管理学生信息。学生隶属班级班级又由 教师指导;学生需要有课程、成绩、学分,而这些又都要靠教师或者管理人员 来完成添加。由此总结出如下需信息:用户分为管理员用户、教师用户和学 生用户。其中,管理员和教师用户是属于相同权限等级的用户。一个班级里有 多个学生,班级组成院系。一个学生有多门课,一门课对应多个学生。一位教 师指导多个班级。一位教师可以教授多门课程,一门课程可以有多个教师来教 授。经过对上述系统功能的分析和需总结,设计如下所示的数据项: 用户信息:用户ID、用户名、密码、权限。 班级信息:班级ID、名称、所属院系、班主任. 学生信息:学生ID、姓名、性别、民族、生日、入学时间、班级、籍贯和 备注。 教师信息:教师ID、姓名、所属院系。 课程信息:课程ID、名称、学时、学分、类型及描述。 2. 总体设计 1、实体及其属性图 由上面的数据项可以设计出能够满足用户需的各种实体以及它们之间的关系 ,为后面的逻辑结构设计打下基础。这些实体包含各种具体信息,通过相互之 间的作用形成数据之间的流动。本系统设计的实体有:学生实体、教师实体、 课程实体和班级实体。 2、功能模块图 3、数据流图 顶层数据流: 总体ER图: 4、数据库的表间关系 5、流程分析 学生登录流程图: 管理员登录流程图: 6、用例图 7、测试用例 用户登录模块的测试:输入信息不正确,系统会提示重新输入。当输入信息正确后 ,会自动进入学生管理模块。 测试学生登录:此模块中可以查看个人信息、课程信息、成绩查询、修改密码、选课浏 览。 选课管理模块的测试: 成绩管理模块的测试: 3. 课程设计的感想: 1、所学:通过一周课程设计,学到了很多知识,能够基于对话
该学生成绩信息管理系统涉及到学生、教师、系统管理员、班级、学生成绩、课程。设置一个系统管理员对系统进行管理。所有用户需输入账号、密码登录进入系统;管理员进入系统后可对学生、老师、班级、课程进行增删改查操作;学生进入系统,查看成绩、查看和修改自己的信息;老师进入系统后,对自己这门课程的学生设置课程成绩、查看和修改自己的信息,查看学生的信息和成绩、以及统计分析学生的成绩; 管理员为班级设置年级,为年级设置课程,为班级的每门课程设置老师,为学生设置班级一个年级有多门课程(语文、数学、外语等等),班级的每门课程只能有一名老师,一个老师可以有多门课程;老师选择自己这门课程为该课程的学生登记成绩。老师可以查看其他老师的信息(可以当成是老师的通讯录),查看本课程学生的信息和成绩;学生可以查看班级其他同学的信息(可以看成是班级的同学录)。 考试分为两种,一种是年级统考,一种是平时考试。年级统考需要管理员事先添加一次年级统考,考试成绩出来后,老师进入系统选择该次考试为学生登记成绩。平时考试则是班级平时的考试,老师添加考试信息,登记成绩成绩统计分析则是针对年级统考进行分析,主要涉及各学科分数名次,总分名次。 技术实现 系统环境:Windows开发工具:IDEAJava版本:JDK 1.8服务器:Tomcat 1.8数据库:MySQL 5.X系统采用技术:Servlet+Jsp+Jdbc+H-ui+EasyUI+jQuery+Html+Css+Ajax 系统功能系统主要分为三种用户角色,分别是管理员、老师以及学生,其具体功能如下: - 管理员   学生信息管理、教师信息管理、年级信息管理、班级信息管理、课程信息管理、考试信息管理,系统参数设置 - 老师   教学管理、教师个人信息维护、教师通讯录管理 - 学生考试成绩查询、学生通讯录、学生个人信息维护 运行截图 登录界面: 管理员界面: 考试列表:  成绩统计: 学生信息管理: 教师信息管理: 年级、班级信息管理:  系统设置: 教师界面:  成绩登记:  教师通讯录: 个人信息:  学生界面: 学生成绩查询: 班级通讯录: 学生个人信息:              
数据库系统概论实验报告 专业 班级 组别 指导教师 姓名 同组人 实验时间 2020 年 4 月 15 日 实验地点 K7-405 实验名称 程序设计基础 实验目的 1. 熟悉 VFP 命令文件的建立和执行。 2. 掌握结构化程序设计的一般方法。 3. 熟练掌握条件语句和循环语句的使用。 实验仪器: 1、支持 Intel Core 3.0G 及其以上 CPU,内存 1G 以上、硬盘 1T 以上容量的微 机; 软件配有 Windows7 操作系统及 Visual Foxpro8.0 软件。 2、了解 Visual Foxpro8.0 软件的特点及系统组成,在电脑上操作 VFP8.0 软件。 实验内容、步骤及程序: 1. 编写程序,判断输入的年份是否是闰年(建议用 IF 语句实现,输入用交互式 语句,输出用?命令) 。 提示:闰年是能被 4 整除但不能被 100 整除,或能被 400 整除。 2. 编写程序,判断输入的字符是字母、数字或是特殊符号(建议用 DO CASE 语 句实现,输入和输出用格式化语句) 。 提示:本程序中判断的数字是字符型数字,与数值型数字类型不同。 3.编写程序, 显示学生登记表中入校总分在 550 分以上的学生记录 (建议用 DO WHILE 语句实现) 。 4. 编写程序,实现验证密码正确后浏览学生登记表的内容,密码设为"OK" ,最多 只能输入三次,密码错误或输入超过三次给出提示(建议用 FOR 循环语句) 。 提示:本程序中因为输入的密码不能在屏幕上显示,所以在输入语句前后要下列两 条语句: SET CONSOLE OFF 输入语句的内容不显示在屏幕上 SET CONSOLE ON 恢 复输入语句内容的屏幕显示另外, 需要提示输入信息的语句应放在 SET CONSOLE OFF 语句之前, 否则提示信息不会显示, 最好是将输入提示语句和输入语句用两条语句, 分别放在 SET CONSOLE OFF 的前后。 左上方框里填写学号后两位,学习委员按此顺号(报告展开排序)交给老师 5. 编写程序,统计学生登记表中男、女生的人数(建议用 SCAN 循环语句) 。 6. 编写程序,统计学生登记表中男、女生的人数(建议用 SCAN 循环语句) 。 3. 编写程序,根据输入的姓名,计算学生的平均成绩,并显示成绩等级。 提示: 等级计算如下: 90<=平均成绩<=100 优 80<=平均成绩<=90 良 70<=平均成绩<=80 中 60<=平均成绩<=70 及格 平均成绩<=60 不及格 由于姓名和成绩要涉及到学生登记表和学生成绩表, 需要分别在两个工作区打 开两个表, 根据输入的姓名,从学生登记表中取得相对应的学号,再根据学号在学生成绩表 中计算出平均成绩,通过等级的计算方法,计算出学生成绩等级,最后输入学 生的平均分和成绩等级。 7. 编写程序,能根据输入的姓名,查找并显示学生各门课程的成绩,要能反复 查找。 提示: 为了实现反复查找的功能,在这里需要用一个循环语句和是否退出循环语 句来控制: ANS="Y" DO WHILE .T. …… WAIT "是否继续查找(Y/N)?" TO ANS IF UPPER(ANS)="Y" LOOP ELSE EXIT ENDIF ENDDO 此程序也涉及到两个表的操作,具体过程参照上题。 此程序要用两个循环,外循环见 。内循环用于显示对应一个学号的多门课程 成绩的 循环显示。 8.编写程序,对任意输入的 10 个数,按从小到大的顺序进行排列(要输出排序 前后的数据) 。 提示: 要定义一个一维数组,用于存放输入的 10 个数据 用两个 FOR 循环分别输出排序前后的数据。 排序要用到 FOR 循环的嵌套,其中需要用到一个中间变量进行两个数据的交换。 实验小结: 通过本次实验, 我了解了 VFP 命令文件的建立和执行, 以及结构化程序设计的一般 方法,掌握了条件语句和循环语句的使用。 教师评语: 1. 实验结果及解释: ( 准确合理、 较准确、 不合理 ) ;占 30% 2. 实验步骤的完整度: ( 完整、 中等、 不完整 ) ;占 30% 3. 实验程序的正确性: ( 很好、 较好、 中等、 较差、 很差 ) ;占 30% 4. 卷面整洁度: ( 很好、 较好、 中等、 较差、 很差 ) ;占 10% 评定等级: ( ) 教师签名: 日期:
基于SSM的学校在线考试系统的设计与实现 Java;SSM;MySQL; 功能需 该学校在线考试系统为了方便考生的使用,分别设计了一下模块来适应考生的需:在线考试、成绩查询、系统公告等。设计了如下板块来满足管理要:考试题库管理、手动生成试卷以及自动生成试卷等板块。在系统后台对信息实施录入、修改、删除等操作,也就是在主页的对应栏目上输入内容,并在网页中展现出来,达到及时更新,及时实现考务信息管理、站内信息发布等功能。 本次毕业设计,以学校的在线考试为例,主要应用SSM框架技术技术进行设计与实现,围绕学生、教师以及系统管理员等角色来设计系统。不同用户角色通过登录后可实现与用户角色所对应功能。 此次的计算机等级考试学校考试管理系统是一款面对台的管理系统,后端分为了三个角色,分别为系统的管理员、教师以及学生。从角色的分配中分别实现以下功能需: (1)系统管理员,系统管理员主要是对系统内的基本信息进行管理,对教师和学生的信息进行管理,对系统内的菜单栏进行管理,对机构进行管理以及角色的管理。 (2)教师,该角色能够对试卷进行管理,包括能够在线进行试卷的组合,在线输出试卷、课程管理、班级管理以及对学生的考试成绩查看等功能。 (3)学生,能够登陆系统,实现学校考试和课程班级查看的功能。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧