【IT专家】sql语句,如何查询一个班的学生成绩都及格的学生的姓名

合集下载

用SQL语句进行简单查询

用SQL语句进行简单查询

用SQL语句进行简单查询一、学习目标:能够用SELECT语句进行简单查询,会使用常用的查询条件,能够按照字段对信息进行筛选,能够对查询的记录进行排序、分组。

二、工作任务:.查询student表中的若干列。

查询表中的若干行。

查询信息的排序显示。

三、实训预备知识四、具体操作内容1.查询student、course和score三个表的全部内容。

Select * from studentSelect * from course;Select * from score2.查询student表,查询姓名长度为三个字,姓“李”,且最后一个字是“强”的全部学生。

Select * from student where sname like 李_强;3.查询考试成绩有不及格的学生的学号及姓名。

Select distinct sno,sname from score where grade <60;4.查询成绩在80-89分的学生的学号和课程名称。

Select sno,cname,grade from score where grade between 80-89;5.查询student表,查询姓"张"并且"所属省份"是"北京"的studentSelect * from student where sname like 张% and shome=”北京”6.查询student表,查询全部student,并按照“性别”排序。

Select * from student order by sex7.查询选择了“电子商务”这门课程且成绩高于90分的学生。

Select sno from score where cname=”电子商务” and grade>908.查询每门课程的选课人数。

Select cno,count(sno) from score grou by cno五、任务实施全班分为4组,每组指派一名组长负责任务的分配,各组完成进行结果的展示汇报,由老师和其它组进行打分评价。

SQL语句 查询 统计

SQL语句 查询 统计

SQL语句查询统计悬赏分:100 - 解决时间:2008-6-18 17:591. 查询学生表中所有学生的详细信息;2. 查询所有学生的学号、姓名、年龄;3. 查询年龄在18岁至20岁之间(含18和20岁)的信息系(IS)学生的学号、姓名、年龄及系名;4. 查询所有姓王或姓李的学生的姓名、学号、年龄;5. 查询成绩不及格的学生学号(要求没有重复);6. 查询信息系(IS)或计算机系(CS)的学生姓名、年龄、系名,结果按系名升序,同一专业按姓名降序排序;7. 查询所有信息系学生的总人数;8. 查询选修了2号课程的学生人数、最高分、平均分;9. 查询各门课程的课程号、选课人数及平均分;10. 查询有1门以上不及格的学生学号和不及格课程门数;11. 统计各个课程的平均分12. 统计各个课程的平均分(按平均分降序排列)13. 统计每个学生的选课数量14. 统计每个学生的选课数量(按选课数量升序排列)15. 统计各个课程的平均分(显示课程名称和平均分)16. 统计各个课程的平均分(显示课程编号、名称和平均分)17. 统计平均分在70分以上的所有课程的平均分(显示课程名称和平均分)18. 统计每个学生的选课数量(显示学生姓名和选课数量)19. 统计每个学生的选课数量(显示学生学号、姓名和选课数量)20. 统计至少选了4门课的所有学生的选课数量(显示学生姓名和选课数量)1.select * from 学生表2.select 学号,姓名,年龄from 学生表3.select 学号,姓名,年龄from 学生表where 年龄between 18 and 20 and 系别=‘IS’4.select 学号,姓名,年龄from 学生表where 姓名like '李%' or 姓名like '李%'5 select distinct 学号from 学生表where 成绩<606. select 姓名,年龄,系名from 学生表where 系in ('IS','CS') order by 系名ASC,姓名desc7 select count(*) from 学生表where 系= 'IS'8 select count(*) ,max(分数),min(分数)from 学生表9 select 课程号,count(*),avg(分数)from 学生表group by课程号10 select 学号,count(*)from 学生表11 select avg(分数),课程号from 学生表group by 课程号12 select avg(分数),课程号from 学生表group by 课程号order by avg(分数)13 select count(*),学号from 学生表group by 学号14 select count(*)a,学号from 学生表group by 学号order by a15 select 课程名称,avg(分数)from 学生表group by 课程名16 select 课程标号,课程名称,avg(分数)from 学生表group by 课程号,课程名17 select 课程名称,avg(分数)a from 学生表where a >7018 select 姓名,count(*) a from 学生表group by 姓名19 select 学号,姓名,count(*) a from 学生表group by 学号,姓名20select 学生姓名,count(*) a from 学生表where a> 4 group by 学生姓名三、论述题1、现有关系数据库如下:学生(学号,姓名,性别,专业)课程(课程号,课程名,学分)学习(学号,课程号,分数)分别用SQL语句实现下列小题1.检索所有选修了课程号为“C112”的课程的学生的学号和分数;2.检索“英语”专业学生所学课程的信息,包括学号、姓名、课程名和分数;3.检索“数据库原理”课程成绩高于90分的所有学生的学号、姓名、专业和分数;4.检索没学过课程号为“C135”课程的学生信息,包括学号,姓名和专业;5.检索至少学过课程号为“C135”和“C219”的课程的学生的信息,包括学号、姓名和2. SELECT xsb.xh,xm,kcm,fs FROM xsb,kcb,xxb WHERE xsb.xh=xxb.xh AND kcb.kch=xxb.kch AND zy='外国语'3. select xsb.xh,xm,zy,fs FROM xsb,kcb,xxb where xsb.xh=xxb.xh and kcm='大学英语' and fs>904. select xsb.xh,xm,zy FROM xsb,kcb,xxb where xsb.xh=xxb.xh and xsb.xh not in(1,5)SELECT xh,xm,zy FROM xsb WHERE xh NOT IN (SELECT xh FROM xxb WHERE kch='C135')5. SELECT xsb.xh,xm,zy FROM xsb WHERE xsb.xh IN (SELECT xsb.xh FROM xxb X1,xxb X2 WHERE X1.xh=X2.xh AND X1.kch='C135' AND X2.kch='C219')2、已知三个表,其表名和字段如下:S(学号,姓名,性别),C(课程编号,课程名称,学时),SC(学号,课程编号,分数)。

实训9-用SQL语句进行简单查询

实训9-用SQL语句进行简单查询

用SQL语句进行简单查询学习目标:l能够用SELECT语句进行简单查询语句进行简单查询l能够按照字段对信息进行筛选能够按照字段对信息进行筛选l能够对查询的记录进行排序能够对查询的记录进行排序工作任务:1.查询student表中的若干列。

表中的若干列。

2.查询表中的若干行。

查询表中的若干行。

3.查询信息的排序显示。

查询信息的排序显示。

4.使用LIKE子句实现模糊查询。

子句实现模糊查询。

任务1分析:查询信息是数据库的基本功能之一,通常可以使用SELECT 语句来完成查询操作。

本任务要完成对student表的若干列的查询,这里的若干列既可以是全部列、也可以是部分列、也可以是一些列的合成的结果集。

因此该任务继续分为下面几个子任务:成的结果集。

因此该任务继续分为下面几个子任务:实验步骤:任务1.1 查询student表的学生编码、姓名、性别和入学成绩表的学生编码、姓名、性别和入学成绩 USE student GO SELECT sno,sname,ssex,sscore FROM student GO 表的所有学生信息任务1.2 查询student表的所有学生信息USE student GO SELECT * FROM student GO 表的学生的姓名和年龄查询 student表的学生的姓名和年龄任务1.3 查询USE student GO SELECT sname 姓名,YEAR(GETDATE())-YEAR(sbirthday) 年龄年龄 FROM student GO 任务2分析:本任务要完成对student表的若干行的查询,可以通过WHERE、TOP和DISTINCT来实现。

WHERE子句可以筛选出满足条件的记录,TOP可以对记录的条数进行具体限定,而DISTINCT 则可以清除一些重复的行。

因此该任务继续分为下面几个子任务: 则可以清除一些重复的行。

因此该任务继续分为下面几个子任务:任务2.1 查询student表的“07010211”班的男生信息USE student GO SELECT * FROM student WHERE classno='07010211' AND ssex='男' GO 任务2.2 应用TOP子句查询choice表中选修“0101001”课程的三位学生学生USE student GO SELECT TOP 3 * FROM choice WHERE cno='0101001' GO 子句消除重复行任务2.3 应用DISTINCT子句消除重复行USE student GO SELECT DISTINCT sno FROM choice GO 任务3 分析:在student表中查询全体学生的信息,查询结果按所在的班级的班级代码降序排序,同一个班级的学生按照学号升序排序。

sql 学生 课程 成绩

sql 学生 课程 成绩

sql 学生课程成绩SQL 学生课程成绩SQL(Structured Query Language),是用于管理关系型数据库系统的一种编程语言。

它通过查询和操作数据库中的数据,实现数据的存储、检索、更新等功能。

在学生课程管理系统中,使用SQL可以方便地对学生、课程和成绩等数据进行管理和操作。

本文将介绍如何利用SQL来实现学生课程成绩的管理。

1. 学生表的创建在学生课程管理系统中,首先需要创建一个学生表来存储学生的信息。

学生表可以包含学生的学号、姓名、性别等字段,用于标识和描述每个学生的特征。

下面是创建学生表的SQL语句:```CREATE TABLE student (id INT PRIMARY KEY,name VARCHAR(50),gender VARCHAR(10));```在上述SQL语句中,`student`为表名,`id`为学生的学号字段,`name`为学生的姓名字段,`gender`为学生的性别字段。

2. 课程表的创建除了学生表,还需要创建一个课程表来存储课程的信息。

课程表可以包含课程编号、课程名称、学分等字段,用于描述每门课程的特征。

下面是创建课程表的SQL语句:```CREATE TABLE course (id INT PRIMARY KEY,name VARCHAR(50),credit INT);```在上述SQL语句中,`course`为表名,`id`为课程的编号字段,`name`为课程的名称字段,`credit`为课程的学分字段。

3. 成绩表的创建除了学生表和课程表,还需要创建一个成绩表来存储学生的课程成绩信息。

成绩表可以包含学生学号、课程编号、成绩等字段,用于记录每个学生在每门课程中的成绩。

下面是创建成绩表的SQL语句:```CREATE TABLE score (student_id INT,course_id INT,score FLOAT,PRIMARY KEY (student_id, course_id),FOREIGN KEY (student_id) REFERENCES student(id),FOREIGN KEY (course_id) REFERENCES course(id));```在上述SQL语句中,`score`为表名,`student_id`为学生的学号字段,`course_id`为课程的编号字段,`score`为学生在课程中的成绩字段。

SQL语句

SQL语句
根据以下查询要求,写出相应的sql语句,并在查询分析器中运行。
1)查询学生表中的所有学生信息,sql语句如下:
2)查询学生表中的所有学生的姓名和入学成绩,sql语句如下:
3)查询学生表中的所有男生信息,sql语句如下:
4)查询学生表中成绩在580以上的男生信息,sql语句如下:
========================================根据要求,完成以下SQL语句
假如学生-课程数据库中包含三张表:
● student(sno,sname,ssex,sage,sdept),此表为学生表,由学生的学号、姓名、性别、年龄和所在系五个属性组成,主码为sno。
● course (cno,cname,ccredit),此表为课程表,由课程号、课程名和学分三个属性组成,主码为cno。
● sc(sno,cno,grade),此表为选课表,由学号、课程号、成绩三个属性组成,主码为(sno,cno)。
试用SQL语言完成以下操作:
1. 向 student表中插入一条记录('086' , '李强' , '男' ,23, '计算机')。
14)查询所有学生的姓名及入学成绩,并统计平均成绩,sql语句如下:
15)按所属院系对学生信息进行分组查询,并统计出每个院系的平均成绩,sql语句如下:
16. 查询所有学生的姓名、性别、班级、所属院系名称(分别使用where子句和join…on…表达连接条件)。
17. 查询一班所有学生的姓名、性别、班级、所属院系名称(分别使用where子句和join…on…表达连接条件)。
2. 将学号为'086'的学生的年龄修改为22。

如何在MySQL中使用SQL语句进行数据查询与筛选

如何在MySQL中使用SQL语句进行数据查询与筛选

如何在MySQL中使用SQL语句进行数据查询与筛选在当今数字化时代,数据的重要性不言而喻。

而对于管理和处理数据的数据库软件MySQL来说,使用SQL语句进行数据查询与筛选是其中最重要的功能之一。

SQL(Structured Query Language)是一种标准化的用于管理关系型数据库的编程语言,它提供了丰富的操作语句,使得我们能够灵活、高效地从数据库中提取和过滤所需的数据。

本文将深入探讨如何在MySQL中使用SQL语句进行数据查询与筛选,并给出一些实例和技巧,帮助读者更好地理解和应用这些知识。

1. 连接到数据库在使用SQL语句查询和筛选数据之前,首先需要连接到MySQL数据库。

通过命令行或者可视化工具(如Navicat、MySQL Workbench等)都可以实现连接。

连接成功后,我们就可以开始编写和执行SQL查询语句了。

2. 查询所有数据最简单的查询语句即为"SELECT * FROM table_name;",它会返回表中的所有数据。

其中"table_name"代表数据库中的表名。

通过这个查询语句,我们可以查看数据库中的所有数据。

举例来说,我们有一个学生成绩表"student_scores",其中包含了学生的姓名和各科成绩。

如果想要查看这个表中的所有数据,可以使用以下语句:```SELECT * FROM student_scores;```这条语句会返回学生成绩表中的所有数据。

3. 查询部分数据有时候我们并不需要查询表中的所有数据,而只是想要获取符合特定条件的数据。

这时候就可以使用WHERE子句来实现条件筛选。

比如我们只对某个特定班级的学生进行查询,可以使用以下语句:```SELECT * FROM student_scores WHERE class="Class A";```上述语句将返回班级为"Class A"的学生的成绩数据。

成绩管理SQL查询语句

成绩管理SQL查询语句

四数据库查询1 select教师编号,姓名,出生日期from教师表where性别='女';2Select姓名,性别,年龄=CaseWhen datediff(year,出生日期,getdate())>=50 then'老年'When datediff(year,出生日期,getdate())>=40 and datediff(year,出生日期,getdate())<50 then'中年'When datediff(year,出生日期,getdate())<40 then'青年'endfrom教师表3Select top 3 姓名From成绩表,学生表where成绩表.学号=学生表.学号Order by分数desc4 Select*From学生表Where院系名称='体育学院'or院系名称='外语学院'and year(出生日期)=1986 5 Select*From学生表Where院系名称='计算机学院'and len(姓名)=2;6 select学号,课程号,分数,等级=casewhen分数>=80 then'优秀'when分数<=60 then'及格'else'不及格'endfrom成绩表;7 select SUM(分数),AVG(分数),MAX(分数),MIN(分数)from成绩表where课程号=5;8select课程号,总分=SUM(分数),平均分=AVG(分数)from成绩表group by课程号order by AVG(分数)desc9 select院系名称,性别,COUNT(*)人数from学生表group by性别,院系名称10select学生表.学号,姓名from学生表,成绩表,课程表where成绩表.课程号=课程表.课程号and成绩表.学号=学生表.学号and课程表.课程名='数据库应用';11select姓名,课程名,分数from学生表,成绩表,课程表where成绩表.课程号=课程表.课程号and成绩表.学号=学生表.学号and分数>ALL(select姓名from学生表where姓名='王林');1213select姓名,学号from学生表where出生日期>=ALL(select出生日期from学生表)14select姓名,AVG(分数)from学生表,成绩表where学生表.学号=成绩表.学号group by姓名;15create table student(学号CHAR(6),姓名CHAR(6),性别CHAR(2))insert into student(学号,姓名,性别)select学生表.学号,学生表.姓名,学生表.性别from学生表where院系名称='计算机学院';五创建视图1CREATE VIEW V_学生_课程_分数ASSELECT学生表.学号,姓名,课程表.课程号,课程名,分数FROM学生表,课程表,成绩表where学生表.学号=成绩表.学号and课程表.课程号=成绩表.课程号and院系名称='计算机学院'GO2 CREATE VIEW V_不及格学生信息ASselect学生表.姓名,课程表.课程名,分数FROM学生表,课程表,成绩表where成绩表.分数<603 CREATE VIEW V_教师信息ASselect*FROM教师表4CREATE VIEW V_课程信息ASselect课程表.课程号,课程名,学分,教师表.姓名FROM课程表,教师表,成绩表where课程表.课程号=成绩表.课程号and成绩表.教师编号=教师表.教师编号5 select SUM(分数)总分,AVG(分数)平均分from V_学生_课程_分数where课程名='数据库应用'1 declare学生cursor scroll for select学号,性别,姓名,出生日期from学生表open学生FETCH LAST FROM学生FETCH FIRST FROM学生FETCH ABSOLUTE 4 FROM学生FETCH RELATIVE 2 FROM学生FETCH RELATIVE-2 FROM学生23七1 create proc StuScoreInfoasselect院系名称,学生表.学号,姓名,性别,课程名,分数from学生表,成绩表,课程表where学生表.学号=成绩表.学号and成绩表.课程号=课程表.课程号2 create proc Stu_Info@学号char(5)asselect*from学生表where学号like@学号3 create proc aa asinsert into学生表(学号,姓名,院系名称)values ('10098','小明','计算机学院')456 create proc dd asSelect姓名,性别,年龄=CaseWhen datediff(year,出生日期,getdate())>=50 then'老年'When datediff(year,出生日期,getdate())>=40 and datediff(year,出生日期,getdate())<50 then'中年'When datediff(year,出生日期,getdate())<40 then'青年'endfrom教师表7 create proc ee asselect学号,课程号,分数,等级=casewhen分数>=80 then'优秀'when分数<=60 then'及格'else'不及格'endfrom成绩表;1 CREATE TRIGGER TR_ScoreCheckON成绩表FOR INSERT,UPDATEASIF UPDATE(分数)PRINT'AFTER触发器开始执行……'BEGINDECLARE@ScoreValue realSELECT@ScoreValue=(SELECT分数FROM inserted)IF@ScoreValue>100 OR@ScoreValue<0PRINT'输入的分数有误,请确认输入的考试分数!'END2 CREATE TRIGGER TR_Stu_DeleteON学生表FOR DELETEASPRINT'删除触发器开始执行……'DECLARE@StuNum char(10)PRINT'把在学生表中删除的记录的学号赋值给局部变量@StuNum。

数据库SQL语句中查询选修了全部课程的学生的学号和姓名

数据库SQL语句中查询选修了全部课程的学生的学号和姓名

数据库SQL语句中查询选修了全部课程的学⽣的学号和姓名⼀、SQL语⾔查询选修了全部课程的学⽣的学号和姓名。

两种解决途径:第⼀种: 我们可以表⽰为在SC表中某个学⽣选修的课程数等于C表中课程总数。

相应的SQL语⾔如下:select S#,SNAMEfrom Swhere S# in(select S#from SCgroup by S# --根据Sno分组,统计每个学⽣选修了⼏门课程。

如果等于C表课程的总数,就是我们要找的S#having count(*) = (select count(*) from C))--统计C表中共有⼏门课程第⼆种: 问题:查询选修了全部课程的学⽣的学号和姓名。

可以转换为:查询没有⼀门课没有被该⽣选择的学⽣的学号和姓名。

相应的SQL语⾔如下:select S#,SNAME -- 在 S 表⾥选 S#,SNAMEfrom Swhere not exists-- 不存在(select*-- 课程from Cwhere not exists-- 没有(select*-- 被该⽣选择的课程from SCwhere SC.S#=S.S# and SC.C#=C.C#)) -- 相关查询,三个表进⾏连接 这个查询语句可以这样理解: 查询没有⼀门课没有被该⽣选择的学⽣的学号和姓名。

第⼀个select 必定是在 S 表⾥选 S#,SNAME select S#,SNAME from S where (不存在) 第⼆个select 是课程,来⾃C表) select * from C where (没有) 第三个select是课程被该⽣选择,来⾃SC表) select * from SC where (SC学号对应S表学号,SC表课程号对应C表课程号) ⼆、SQL语⾔查询选修了学号为“2001050105”的学⽣所选全部课程的学⽣姓名。

问题:查询选修了学号为“2001050105”的学⽣所选全部课程的学⽣姓名。

使用SQL语句进行数据查询

使用SQL语句进行数据查询

--(1)查询计算机系(CS)的所有学生的姓名,查询结果按学号升序排列。

select sname from student where sdept='cs'order by sno--(2)查询学生选课成绩合格的课程成绩,并把成绩换算为积点(60分对应积点为1,每增加1分,积点增加0.1)。

select ccredit=1+(grade-60)*0.1 from course,scwhere grade>=60 and o=o--(3)查询学分为3或4的课程名称。

select cname from course where ccredit in (3,4)--(4)查询所有课程名称中含有“数据”的课程号。

select cname from course where cname like'%数据%'--(5)查询所有选课记录的课程号(不重复显示)。

select distinct cno from sc--(6)统计所有学生的平均年龄。

select avg(sage) '平均年龄' from student--(7)查询所有学生的学号、姓名和平均成绩,按平均成绩降序排列。

★select student.sno,sname,avg(grade) 'average' from dbo.SC,dbo.Student where student.sno=sc.snogroup by student.sno ,snameorder by average desc--(8)统计各门课程的选课人数和平均成绩。

select cno, count(cno) '人数',avg(grade) '平均成绩' from scgroup by cno--(9)查询至少选修了三门课程的学生学号。

★select sno from scgroup by snohaving count(cno)>=3--(10)查询学号为200215121的学生所选的全部课程的课程名和成绩。

只有两个字段用一个sql语句查询出某个学生的姓名、成绩以及在表中的排名

只有两个字段用一个sql语句查询出某个学生的姓名、成绩以及在表中的排名

只有两个字段⽤⼀个sql语句查询出某个学⽣的姓名、成绩以及在表中的排名昨天去⾯试时遇到⼀个这样的问题:有⼀张成绩表,只有两个字段,姓名和成绩。

怎样⽤⼀个sql语句查询出某个学⽣的姓名,成绩以及在表中的排名?⼀时间我也想不出具体实现,我就提了两种思路:⼀种是通过join关联⼀个查询出他排名的sql语句;⼀种是通过group by来实现。

回答得连⾃⼰都觉得有点⼼虚。

请问⼤家如何实现呢?假设:表名字为Course,两个字段分别为name和score实现语句:SELECT 学⽣,成绩,(SELECT COUNT(*) FROM 表 WHERE a.成绩<=成绩) AS 排名FROM 表 AS a⽅法⼆:declare @Course table(name varchar(100),cj int)insert into @Courseselect 'a',99union allselect 'b',66union allselect 'c',88select * from (select (select 1+count(name) from @Course where cj>t.cj) mc,name,cjfrom @Course t) temwhere name='b'如果有成绩相同的记录的时候,goodspeed的语句确实有⼀些瑕疵,但是我根据他的语句稍微修改了⼀下就很完美了。

SELECT name,score,(SELECT COUNT(*)+1 FROM course WHERE a.score<score) AS sortFROM course AS a order by sort更多请到这⾥查看。

SQL查询有两门以上不及格的学生及查询出全部及格的学生

SQL查询有两门以上不及格的学生及查询出全部及格的学生

SQL查询有两门以上不及格的学⽣及查询出全部及格的学⽣1、表结构:/*学⽣*/create table student(sno int not null primary key,sname varchar(10));/*课程*/create table center(cno int not null primary key,cname varchar(10));/*分数*/create table sgrade(sno int ,cno int ,sgrade int);2、插⼊数据:insert into student values(11,'a');insert into student values(12,'b');insert into student values(13,'c')insert into center values(21,'aa');insert into center values(22,'bb');insert into center values(23,'cc')insert into sgrade values(11,21,54);insert into sgrade values(12,22,57);insert into sgrade values(11,21,51);insert into sgrade values(12,21,36);insert into sgrade values(11,21,28);insert into sgrade values(12,22,42);insert into sgrade values(11,21,59)insert into sgrade values(11,21,79);insert into sgrade values(12,22,85);insert into sgrade values(11,21,90);insert into sgrade values(12,21,96);insert into sgrade values(11,21,98);insert into sgrade values(12,22,94);insert into sgrade values(11,21,99)3、查询出有两门以上不及格的学⽣:SELECT s.sno,s.snamefrom student sLEFT JOIN sgrade g on s.sno=g.snoWHERE g.sgrade<60GROUP BY s.sno HAVING COUNT(s.sno)>24、查询出全部及格的学⽣:SELECT*FROM student WHERE sno not in (SELECT s.snofrom student sLEFT JOIN sgrade g on s.sno=g.snoWHERE g.sgrade<60)。

编写SQL语句查询出每个各科班分数最高的同学的名字,班级名称,课程名称,分数

编写SQL语句查询出每个各科班分数最高的同学的名字,班级名称,课程名称,分数

编写SQL语句查询出每个各科班分数最⾼的同学的名字,班级名称,课程名称,分数这个问题是在csdn上⼀位朋友写的,但是答案有点复杂,⽽且查询使⽤的效率也不是很好,于是⾃⼰也写了⼀个。

以下是表结构和数据,有以下两张表,Class表classid classname1 ⾼三(⼀)班2 ⾼三(⼆)班3 ⾼三(三)班Student表studentid studentName classid1 张三 22 李四 13 王五 14 赵六 35 钱七 26 孙九 3score表scoreid course studentid score1 数学2 992 数学3 603 数学4 804 语⽂5 795 语⽂6 586 语⽂ 1 667 英语 6 768 英语 4 879 英语 3 10010 英语 2 69编写SQL语句查询出每个各科班分数最⾼的同学的名字,班级名称,课程名称,分数(问题有点绕⼝)朋友的答案:if exists(select count(*) from sysobjects where type='U' and name='#temp')drop table #tempselect p.studentid,studentname,p.classid,classname,course,score into #temp from( select studentid,studentname,student.classid,classnamefrom student right outer join class on student.classid=class.classid) as pleft outer join score on p.studentid=score.studentidselect (select top 1 studentname from #temp where classname=x.classname and course=x.course order by score desc) as '姓名',classname as '班级',course as '课程',max(score) as '分数'from #temp x group by classname,course order by classname我⾃⼰的答案:select t.classname,course,max(score) 'score',min(t.studentName) 'studentName' from (select s.studentName,c.classname,r.course,r.score from student s inner join class c on s.classid=c.classid inner join score r on r.studentid=s.studentid ) as t group by classname,course。

在sql中对成绩表的各种查询

在sql中对成绩表的各种查询

在sql中对成绩表的各种查询#成绩表:编号姓名科目名称分数create table tb_scorce(id int primary key auto_increment,name varchar(20),courese_name varchar(30),score float);insert into tb_scorce(name,courese_name,score) values('大猫','外语',30);insert into tb_scorce(name,courese_name,score) values('大猫','计算机',59.9);insert into tb_scorce(name,courese_name,score) values('大猫','数学',5);insert into tb_scorce(name,courese_name,score) values('大猫','C#',80);insert into tb_scorce(name,courese_name,score) values('小猫','外语',88.8);insert into tb_scorce(name,courese_name,score) values('小猫','计算机',99.9);insert into tb_scorce(name,courese_name,score) values('小猫','数学',9);insert into tb_scorce(name,courese_name,score) values('小猫','C#',80);insert into tb_scorce(name,courese_name,score) values('中猫','外语',88.8);insert into tb_scorce(name,courese_name,score) values('中猫','计算机',99.9);insert into tb_scorce(name,courese_name,score) values('老猫','数学',9);insert into tb_scorce(name,courese_name,score) values('老猫','C#',80);insert into tb_scorce(name,courese_name,score) values('猫猫','C#',80);#1.查询每个学生的平均成绩,最高成绩、最低成绩、总成绩select name,avg(score),max(score),min(score),sum(score) from tb_scorce group by name;#2.查询每个学生的考试的科目数select name, count(courese_name) from tb_scorce group by name;#3.查询每个学生的考试的科目数大于2门的学生信息查询出每个学生考试的科目数select name, count(courese_name) from tb_scorce group by name;筛选出科目数大于2的学生信息select name, count(courese_name) from tb_scorce group by name where count(courese_name)>2;(错)select name, count(courese_name) from tb_scorce where count(courese_name)>2 group by name ;(错)select name, count(courese_name) from tb_scorce group by name having count(courese_name)>2;order by学生的成绩从高到低排序select * from tb_scorce order by score desc;学生的成绩从低到高排序select * from tb_scorce order by score asc;附加:前五条信息select * from tb_student limit 0,5;select * from tb_student limit 5;最新的五条信息select * from tb_student order by id desc limit 5;查询第三条到第五条信息select * from tb_student limit 2,3;年龄从高到低的前三条信息select * from tb_student order by age desc,id limit 3; 年龄从高到低的第三条到第十条信息信息2, 7 select * from tb_student order by age desc,id limit 2, 7;。

sql笔试题 学生表都及格

sql笔试题 学生表都及格

sql笔试题学生表都及格
学生表中有一列成绩(score),现在需要查询出所有成绩都及格的学生信息。

在SQL中,我们可以通过编写相应的查询语句来实现这个目标。

首先,我们需要查看学生表的结构,确保我们知道应该查询哪些列。

假设学生表包含学生的姓名(name)、学号(student_id)和成绩(score)三个字段。

现在,我们需要筛选出所有成绩都及格的学生信息。

在SQL中,我们可以使用SELECT语句来查询需要的信息。

针对这个问题,我
们可以使用如下的SQL语句:
SELECT name, student_id, score
FROM 学生表
WHERE score >= 60;
在上面的SQL语句中,我们使用SELECT语句选择了学生表中的姓名、学号和
成绩三个字段。

然后,我们使用FROM子句指定了我们要查询的表,这里是学生表。

最后,我们使用WHERE子句筛选出了所有成绩大于等于60分的学生信息,即所有
成绩都及格的学生。

通过执行上述SQL语句,我们就可以得到所有成绩都及格的学生信息。

这样的查询可以帮助学校或教育机构快速了解学生的学习情况,及时采取措施帮助那些成绩较差的学生。

在实际工作中,SQL查询是数据库管理中非常重要的一部分。

通过编写合适的
查询语句,我们可以实现对数据库中数据的灵活检索和分析,为决策提供有力的支持。

总的来说,SQL查询是数据库管理中的基本技能,对于数据分析和决策具有重要意义。

希望通过学习和实践,大家能够熟练掌握SQL查询的方法,为工作和学习带来便利。

SQL语言查询

SQL语言查询

1、查询选c1课程并及格的学生总人数及最高分、最低分。

select count(*),max(grade),min(grade) from enrollswhere cno='c1' and grade>602、按学号求每个学生所选课程的平均成绩超过88分以上的学生。

select sno,avg(grade) as avg_grade from enrollsgroup by sno having avg(grade)>883、找出选课学生超过2人的课程的平均成绩及选课人数。

select cno,avg(grade),count(*) as st_number from enrollsgroup by cno having count(*)>24、查询student中男生的每一年龄组(超过并包含2人)有多少,要求查询结果按人数升序排列,人数相同时按年龄降序排列。

select age,count(sno) as number from studentwhere sex='男'group by age having count(sno)>=2order by number,age desc5、查询与张春明在同一个系学习的学生。

select s1.sno,s1.sname,s1.department from student s1,student s2where s1.department=s2.department and s2.sname='张春明'select sno,sname,department from studentwhere department=(select department from student where sname='张春明')6、查询其他系中比计算机系中所有学生年龄都大的学生姓名及年龄。

请用一句sql语句取出各科的平均成绩,显示字段,科目,平均成绩

请用一句sql语句取出各科的平均成绩,显示字段,科目,平均成绩

请⽤⼀句sql语句取出各科的平均成绩,显⽰字段,科⽬,平均成绩学⽣表A有两个字段,Id,Name,成绩表B有四个字段,Id,StudentId,Score,SubjuectType,其中StudentId对应A中Id,SubjuectType表⽰科⽬。

1.请⽤⼀句sql语句取出各科的平均成绩,显⽰字段,科⽬,平均成绩select SubjectType,AVG(Score)as AvgScore from StuScore group by SubjectType2.请使⽤⼀句SQL,获取平均成绩在80分以上的所有学⽣信息,显⽰字段:学⽣ID,姓名,平均成绩select Students.Id,,AVG(StuScore.Score)as AvgScore from Students join StuScoreon Students.Id=StuScore.StudentId group by Students.Id, having AVG(StuScore.Score)>80扩展:在.net中实现:class Program{static void Main(string[] args){var students = new List<Student>{new Student { Id = "1", Name = "张三"},new Student { Id = "2", Name = "李四"},new Student { Id = "3", Name = "赵五"},};var stuscores = new List<StuScore>{new StuScore { Id = "1", StudentId = "1",Score=80.5,SubjuectType="语⽂"},new StuScore { Id = "2", StudentId = "2",Score=79.5,SubjuectType="语⽂"},new StuScore { Id = "3", StudentId = "3",Score=80.0,SubjuectType="语⽂"},new StuScore { Id = "4", StudentId = "1",Score=79.5,SubjuectType="数学"},new StuScore { Id = "5", StudentId = "2",Score=80.5,SubjuectType="数学"},new StuScore { Id = "6", StudentId = "3",Score=80.3,SubjuectType="数学"},};//拼接表var list = students.Join(stuscores, a => a.Id, b => b.StudentId, (a, b) => new { a, b });foreach (var item in list){Console.WriteLine(" 学⽣姓名:{0},科⽬:{1},分数:{2}", ,item.b.SubjuectType,item.b.Score);}//取出各科的平均成绩,显⽰字段,科⽬,平均成绩var avgscorelist = stuscores.GroupBy(a=>a.SubjuectType).Select(b=> new { SubjuectType= b.Key, Average = b.Average(c => c.Score) });foreach (var item in avgscorelist){Console.WriteLine("科⽬:{0},平均分:{1}", item.SubjuectType, item.Average);}//获取平均成绩在80分以上的所有学⽣信息,显⽰字段:学⽣ID,姓名,平均成绩List<AvgStuScore> avgstulist = new List<AvgStuScore>();foreach (var item in students){AvgStuScore assmodel = new AvgStuScore();assmodel.Id = item.Id; = ;var mylist=stuscores.Where(a => a.StudentId == item.Id);double totalscore = 0;foreach (var myitem in mylist){totalscore += myitem.Score;}if(mylist.Count()!=0){assmodel.AvgScore = totalscore / mylist.Count();}else{assmodel.AvgScore = 0;}avgstulist.Add(assmodel);}foreach (var item in avgstulist.Where(a=>a.AvgScore>80).OrderBy(a=>a.Id)){Console.WriteLine("学⽣ID:{0},姓名:{1},平均分:{2}", item.Id, ,item.AvgScore);}Console.ReadKey(); }///<summary>///学⽣表///</summary>public class Student{public string Id { get;set;}public string Name{ get; set;}}///<summary>///学⽣成绩表///</summary>public class StuScore{public string Id { get; set; }public string StudentId { get; set; }public double Score { get; set; }public string SubjuectType { get; set; }}///<summary>///学⽣平均成绩视图类///</summary>public class AvgStuScore{public string Id { get; set; }public string Name { get; set; }public double AvgScore { get; set; } }}。

sql统计-关于学生成绩

sql统计-关于学生成绩

sql统计-关于学生成绩学生成绩表(stuscore):姓名:name 课程:subject 分数:score 学号:stuid 张三数学89 1张三语文80 1张三英语70 1李四数学90 2李四语文70 2李四英语80 2SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE[dbo].[stuscore]([name][varchar](50) COLLATE Chinese_PRC_CI_AS NULL,[subject][varchar](50) COLLATE Chinese_PRC_CI_AS NULL,[score][int]NULL,[stuid][int]NULL) ON[PRIMARY]GOSET ANSI_PADDING OFF问题:1. 计算每个人的总成绩并排名(要求显示字段:姓名,总成绩)2. 计算每个人的总成绩并排名(要求显示字段: 学号,姓名,总成绩)3. 计算每个人单科的最高成绩(要求显示字段: 学号,姓名,课程,最高成绩)4. 计算每个人的平均成绩(要求显示字段: 学号,姓名,平均成绩)5. 列出各门课程成绩最好的学生(要求显示字段: 学号,姓名,科目,成绩)6. 列出各门课程成绩最好的两位学生(要求显示字段: 学号,姓名,科目,成绩)7. 统计如下:学号姓名语文数学英语总分平均分8.列出各门课程的平均成绩(要求显示字段:课程,平均成绩)9.列出数学成绩的排名(要求显示字段:学号,姓名,成绩,排名)10.列出数学成绩在2-3名的学生(要求显示字段:学号,姓名,科目,成绩)11.求出李四的数学成绩的排名12.统计如下:课程不及格(0-59)个良(60-80)个优(81-100)个13.统计如下:数学:张三(50分),李四(90分),王五(90分),赵六(76分)答案:1. 计算每个人的总成绩并排名select name,sum(score) as allscore from stuscore group by name order by allscore2. 计算每个人的总成绩并排名select distinct ,t1.stuid,t2.allscore from stuscore t1,(select stuid,sum(score) as allscore from stuscore group by stuid )t2where t1.stuid=t2.stuidorder by t2.allscore desc3. 计算每个人单科的最高成绩select t1.stuid,,t1.subject,t1.score from stuscore t1,(select stuid,max(score) as maxscore from stuscore group by stuid ) t2where t1.stuid=t2.stuid and t1.score=t2.maxscore4.计算每个人的平均成绩select distinct t1.stuid,,t2.avgscore from stuscore t1,(select stuid,avg(score) as avgscore from stuscore group by stuid) t2where t1.stuid=t2.stuid5.列出各门课程成绩最好的学生select t1.stuid,,t1.subject,t2.maxscore from stuscore t1,(select subject,max(score) as maxscore from stuscore group by subject ) t2where t1.subject=t2.subject and t1.score=t2.maxscore6.列出各门课程成绩最好的两位学生select distinct t1.*from stuscore t1where t1.stuid in(select top2 stuscore.stuid from stuscore where subject = t1.subject order by sc ore desc)order by t1.subject7.学号姓名语文数学英语总分平均分select stuid as学号,name as姓名,sum(case when subject='语文'then score else0end) as语文,sum(case when subject='数学'then score else0end) as数学,sum(case when subject='英语'then score else0end) as英语,sum(score) as总分,(sum(score)/count(*)) as平均分from stuscoregroup by stuid,nameorder by总分desc8.列出各门课程的平均成绩select subject,avg(score) as avgscore from stuscoregroup by subject9.列出数学成绩的排名declare@tmp table(pm int,name varchar(50),score int,stuid int)insert into@tmp select null,name,score,stuid from stuscore where subject='数学'ord er by score descdeclare@id intset@id=0;update@tmp set@id=@id+1,pm=@idselect*from@tmpselect DENSE_RANK () OVER(order by score desc) as row,name,subject,score,stuid fro m stuscore where subject='数学'order by score descdeclare@tmp table(pm int identity(1,1),name varchar(50),score int,stuid int) insert into@tmpselect name,score,stuid from stuscore where subject='数学'order by score desc select*from@tmp10. 列出数学成绩在2-3名的学生select t3.*from(select top2t2.*from(select top3name,subject,score,stuid from stuscore where subject='数学'order by score desc) t2 order by t2.score) t3 order by t3.score desc11. 求出李四的数学成绩的排名declare@tmp table(pm int,name varchar(50),score int,stuid int)insert into@tmp select null,name,score,stuid from stuscore where subject='数学'ord er by score descdeclare@id intset@id=0;update@tmp set@id=@id+1,pm=@idselect*from@tmp where name='李四'12. 课程不及格(-59)良(-80)优(-100)select subject,(select count(*) from stuscore where score<60and subject=t1.subject) as不及格,(select count(*) from stuscore where score between60and80and subject=t1.subjec t) as良,(select count(*) from stuscore where score >80and subject=t1.subject) as优from stuscore t1 group by subject13. 数学:张三(50分),李四(90分),王五(90分),赵六(76分)declare@s varchar(1000)set@s=''select@s=@s+','+name+'('+convert(varchar(10),score)+'分)'from stuscore where su bject='数学'set@s=stuff(@s,1,1,'')print'数学:'+@s。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本文由我司收集整编,推荐下载,如有疑问,请与我司联系sql语句,如何查询一个班的学生成绩都及格的学生的姓名2011/03/09 10 where成绩60and........关键是如何判断一个班的都及格了??????????????????select班级,学生姓名from成绩表where成绩60and班级notin(selectdistinct班级from成绩表where成绩60) select*from成绩表twherenotexists(select1from成绩表wheret.班级=班级andt.成绩60) select班级,sum(casewhen成绩=60then1else0end)及格人数,count(*)总人数from 成绩表groupby班级withcteas(select班级,sum(casewhen成绩=60then1else0end)及格人数,count(*)总人数from成绩表groupby班级)select班级,(casewhen及格人数总人数then’不完全及格’else’全部及格’end)及格标识fromcte if(selectcount(0)from成绩表)=(selectcount(0)from成绩表where成绩=60)print’都及格了’elseprint’有人不及格’ SQL语句练习题参考答案1、selectSname,Ssex,ClassfromStudent;2、selectdistinctdepartfromteacher;3、selectSnoas’学号’,Snameas’姓名’,Ssexas’性
别’,Sbirthdayas’出生日期’,Classas’班号’fromstudent;或selectSnoas学号,Snameas姓名,Ssexas性别,Sbirthdayas出生日期,Classas班号fromstudent;4、
select*fromscorewheredegreebetween60and80;或select*fromscorewheredegree
=60anddegree 5、select*fromscorewheredegreein(85,86,88);6、select*fromstudentwhere orSsex=‘女’;7、select*fromstudentorderbyclassdesc;8、
select*fromscoreorderbycnoasc,degreedesc;或
select*fromscoreorderbycno,degreedesc;9、selectcount(*)asCNTfromstudentwhere ;10、selectSnoas’学号’,cnoas’课程号’,degreeas’最高
分’fromscorewheredegree=(selectmax(degree)fromscore)11、selectavg(degree)as课程平均分fromscorewherecno=‘3-105’;12、
selectcno,avg(degree)fromscorewherecnolike’3%’groupbycnohavingcount(*) 13、selectSnofromscoregroupbySnohavingmin(degree) 70andmax(degree) 14、selectstudent.Sname,o,score.degreefromstudent,scorewherestudent.Sno=score.Sno ;15、selectx.Sno,ame,x.degreefromscorex,o=o;16、。

相关文档
最新文档