⑴ sql:选课表(学号,课程号,成绩),现要查询成绩最高的三个学生的学号、课程号和成绩,包括并列情况
select * from 选课 where 成绩>=(select 成绩 from (select 成绩,row_number()over(order by 成绩 desc nulls last ) r from 选课) where r=3) order by 成绩 desc。
考虑了并列关系,原理是先求出第三名同学的成绩,然后与第三名同学的成绩相等的同学认为等同于第三名,最后输出的是前三名同学,和第三名并列的也一并输出。如果看不懂里面某个代码可以告诉我,我用的是ORACLE。
⑵ SQL语句:查询各班成绩前3的同学姓名
分析如下:
可以用row_number函数来解决。
1、创建测试表,插入数据:
(资料来源:网络:SQL语句)
⑶ 用SQL选出每个人成绩的最高纪录
查询每个人最高成绩SQL:
第一种:先使用group by和max得到最高分数和学科,然后再查询一下score表,找到学科和分数都相同的记录
select b.* from (select max(score) t,course from score group by course) a,score b where a.t=b.score and a.course=b.course
第二种:先得到相同学科的最高分数,再查询score表,找到最高分数的记录select * from score a where score=(select max(score) from score where course=a.course)
第三种:score表中,当学科一样的时候,不存在一条记录的分数小于其它记录的分数select * from score a where not exists(select * from score where a.course=course and a.score<score)
⑷ SQL语句如何查询成绩的前三名带成绩重复的
select * from table where 成绩 in (select top 3 distinct 成绩 from table order by 成绩 desc) order by 成绩 desc
下面这个效率要高点
select * from table where 成绩 >= (select min(成绩) from(select top 3 distinct 成绩 from table)) order by 成绩 desc
⑸ 用sql语句,查询每个班级成绩排名前三名的学生姓名
1、首先在打开的SQLServer中,假设有两条数据中,包含有【张】,但是这个张一前一后,如下图所示。
⑹ 用SQL选出每个人成绩的最高的前三条纪录
--用开窗函数每个用户成绩排序
select*from
(selectt.*,row_number(partitionby用户名orderby成绩desc)asflagfrom表名t)
whereflag<=3
⑺ 用sql语句,查询每个班级成绩排名前三名的学生姓名
1、首先在打开的SQLServer中,假设有两条数据中,包含有【张】,但是这个张一前一后,如下图所示。
⑻ sql语句 每科成绩的前三名
可以用row_number函数来解决。
1、创建测试表,插入数据:
create table sc
(id int,
name varchar(20),
class varchar(20),
score int);
insert into sc values (1,'badkano','一年一班',100)
insert into sc values (2,'网络知道团长','一年一班',99)
insert into sc values (3,'小短','一年一班',95)
insert into sc values (4,'小小动','一年一班',97)
insert into sc values (5,'小智','一年一班',80)
insert into sc values (6,'吕布','一年二班',67)
insert into sc values (7,'赵云','一年二班',90)
insert into sc values (8,'典韦','一年二班',89)
insert into sc values (9,'关羽','一年二班',70)
insert into sc values (10,'马超','一年二班',98)
2、查询每个班级的前三名,可用语句:
select * from
(select row_number() over (partition by class order by score desc) 排名,* from sc) t
where 排名<=3 order by class asc,score desc
⑼ SQL语句:查询各班成绩前3的同学姓名
分析如下:
可以用row_number函数来解决。
1、创建测试表,插入数据:
2、查询每个班级的前三名,可用语句:
3、结果截图:
拓展资料
(1)结构化查询语言(Structured
Query
Language)简称SQL,结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
(2)ql
语句就是对数据库进行操作的一种语言。
(3)更新:update
table1
set
field1=value1
where
范围。
(4)查找:select
*
from
table1
where
field1
like
’%value1%’
(所有包含‘value1’这个模式的字符串)。
(5)排序:select
*
from
table1
order
by
field1,field2
[desc]。
(6)求和:select
sum(field1)
as
sumvalue
from
table1。
(7)平均:select
avg(field1)
as
avgvalue
from
table1。
(8)最大:select
max(field1)
as
maxvalue
from
table1。
(9)最小:select
min(field1)
as
minvalue
from
table1[separator]。
(资料来源:网络:SQL语句)
⑽ 数据库中查出表中最高到最低成绩的前3名的语句怎么写
最高成绩前3名:SELECT TOP 3 score FROM Marks ORDER BY score DESC(按成绩从高到低排列,取三位。) 最低成绩前3名:SELECT TOP 3 score FROM Marks ORDER BY score ASC