❶ 用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
❸ Mysql 单表查询各班级总分前三名
select class,total,name from (select *,ywsc+sxsc as total from st ORDER BY total DESC) b
where
not EXISTS(select * from (select *,ywsc+sxsc as total from st ORDER BY total DESC) c where c.class=b.class and b.total < c.total GROUP BY c.class HAVING COUNT(*)>2 )
ORDER BY b.class,b.total 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语句)
❺ oracle中的sql求总分前三名
可以用row_number来查询。
1、创建数据表,插入数据:
createtablesc
(idint,
namevarchar(20),
classvarchar(20),
scoreint);
insertintoscvalues(1,'badkano','一年一班',100);
insertintoscvalues(2,'网络知道团长','一年一班',99);
insertintoscvalues(3,'小短','一年一班',95);
insertintoscvalues(4,'小小动','一年一班',97);
insertintoscvalues(5,'小智','一年一班',80);
insertintoscvalues(6,'吕布','一年二班',67);
insertintoscvalues(7,'赵云','一年二班',90);
insertintoscvalues(8,'典韦','一年二班',89);
insertintoscvalues(9,'关羽','一年二班',70);
insertintoscvalues(10,'马超','一年二班',98);
commit;
2、查询分数的前三名,可用以下语句:
select*from
(selectrow_number()over(orderbyscoredesc)rn,sc.*fromsc)
wherern<=3;
3、结果显示:
❻ 统计表里记录数前3名,的SQL怎么写
Select Top在不同数据库中的使用用法:
1. Oracle数据库 SELECT * FROM TABLE1 WHERE ROWNUM<=N
2. Infomix数据库 SELECT FIRST N * FROM TABLE1
3. DB2数据库
SELECT * ROW_NUMBER() OVER(ORDER BY COL1 DESC) AS ROWNUM WHERE ROWNUM<=N
或者 SELECT COLUMN FROM TABLE FETCH FIRST N ROWS ONLY
4. SQL Server数据库 SELECT TOP N * FROM TABLE1
5. Sybase数据库 SET ROWCOUNT N GO SELECT * FROM TABLE1
6. MySQL数据库 SELECT * FROM TABLE1 LIMIT N
7. FoxPro数据库 SELECT * TOP N FROM TABLE ORDER BY COLUMN
别人总结的,对应的地址:网页链接
❼ 用SQL选出每个人成绩的最高的前三条纪录
--用开窗函数每个用户成绩排序
select*from
(selectt.*,row_number(partitionby用户名orderby成绩desc)asflagfrom表名t)
whereflag<=3
❽ mysql版 查询各科成绩前三名的记录:(不考虑成绩并列情况)
上面那条答案应该是可以的啊,可能是看起来复杂了点吧,我自己试过是没问题的:
SELECT t1.sno,t1.cno,Score
FROM SC t1
WHERE EXISTS
(SELECT COUNT(1)
FROM SC
WHERE t1.cno= cno AND t1.score<score
HAVING COUNT(1)<3)
ORDER BY t1.cno,score DESC
另外还有一种类似的写法:
SELECT t1.sno,t1.cno,Score
FROM SC t1
WHERE
(SELECT COUNT(cno)
FROM SC
WHERE t1.cno= cno AND t1.score<score)<3
ORDER BY t1.cno,score DESC
❾ SQL语句:查询各班成绩前3的同学姓名
分析如下:
可以用row_number函数来解决。
1、创建测试表,插入数据:
(资料来源:网络:SQL语句)
❿ SQL难题:查询所有学科成绩都不及格的和总分排名前三名的
1、都不及格:
select
a.name,a.lesson,a.score
from
test
a,
(select
name,count(lesson)
as
cl
from
test
group
by
name)
b,
(select
name,count(lesson)
as
cl
from
test
where
score
<
60
group
by
name)
c
where
a.name=b.name
and
a.name=c.name
and
b.cl=c.cl
2、总分前三:(不太合理,学科不一样,靠得越多,总分越高,业务需求有问题)
select
top
3
name,sum(score)
as
总分
from
test
gropu
by
name
order
by
2
回答者:
shaoshuai_bd
-
经理
五级
10-22
12:36
第二道题,二楼的写法是sql
server的写法,在oracle中是不能执行的,下面是
oracle中的写法
select
*
from
(
select
name,sum(score)
as
z
from
a
group
by
name
order
by
z
desc)
where
rownum<=2