按照人名查出学生的各科成绩以及总成绩并按总成绩排名的sql语句
按照人名查出学生的各科成绩以及总成绩并按总成绩排名的sql语句示例如下:
select A.name,
(select B.score from table_score B where B.type='数学' and A.id=B.id)as 数学,
(select B.score from table_score B where B.type='语文' and A.id=B.id)as 语文,
(select B.score from table_score B where B.type='英语' and A.id=B.id) as 英语,
(select SUM(B.score) from table_score B where A.id=B.id) as sum_score
from table_student A order by sum_score DESC
以上sql语句首先把学生表和成绩表联合查出每个学生的数学、语文、英语成绩,然后通过select SUM(B.score) from table_score B where A.id=B.id查出每个学生的总成绩。
最后order by sum_score DESC实现按总成绩倒叙排列。
/iknow-pic.cdn.bcebos.com/5d6034a85edf8db1650ea8660623dd54564e7494"target="_blank"title="点击查看大图"class="ikqb_img_alink">/iknow-pic.cdn.bcebos.com/5d6034a85edf8db1650ea8660623dd54564e7494?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto"esrc="https://iknow-pic.cdn.bcebos.com/5d6034a85edf8db1650ea8660623dd54564e7494"/>
扩展资料
上述sql语句重点是对as关键字的使用-Alias(别名),通过使用SQL,可以为列名称和表名称指定别名(Alias)。
表的SQLAlias语法
SELECTcolumn_name(s)FROMtable_nameASalias_name;
列的SQLAlias语法
SELECTcolumn_nameASalias_nameFROMtable_name;
Alias实例:使用表名称别名
假设我们有两个表分别是:"Persons"和"Product_Orders"。我们分别为它们指定别名"p"和"po"。
现在,我们希望列出"JohnAdams"的所有定单。
我们可以使用下面的SELECT语句:
SELECTpo.OrderID,p.LastName,p.FirstNameFROMPersonsASp,Product_OrdersASpoWHEREp.LastName='Adams'ANDp.FirstName='John'
按照人名查出学生的各科成绩以及总成绩并按总成绩排名的sql语句示例如下:
select A.name ,
(select B.score from table_score B where B.type='数学' and A.id=B.id) as 数学 ,
(select B.score from table_score B where B.type='语文' and A.id=B.id) as 语文,
(select B.score from table_score B where B.type='英语' and A.id=B.id) as 英语,
(select SUM(B.score) from table_score B where A.id=B.id) as sum_score
from table_student A order by sum_score DESC
以上sql语句首先把学生表和成绩表联合查出每个学生的数学、语文、英语成绩,然后通过select SUM(B.score) from table_score B where A.id=B.id查出每个学生的总成绩。
最后order by sum_score DESC实现按总成绩倒叙排列。
扩展资料
上述sql语句重点是对as关键字的使用- Alias(别名),通过使用 SQL,可以为列名称和表名称指定别名(Alias)。
表的 SQL Alias 语法
SELECT column_name(s) FROM table_name AS alias_name;
列的 SQL Alias 语法
SELECT column_name AS alias_name FROM table_name;
Alias 实例: 使用表名称别名
假设我们有两个表分别是:"Persons" 和 "Product_Orders"。我们分别为它们指定别名 "p" 和 "po"。
现在,我们希望列出 "John Adams" 的所有定单。
我们可以使用下面的 SELECT 语句:
SELECT po.OrderID, p.LastName, p.FirstName FROM Persons AS p, Product_Orders AS poWHERE p.LastName='Adams' AND p.FirstName='John'
推荐于2017-09-01
/*
create table 学生表(
学号 nvarchar(100) null,
姓名 nvarchar(100) null)
create table 成绩表(
学号 nvarchar(100) null,
科目 nvarchar(100) null,
成绩 decimal(10,1) null
)
insert into 学生表 values('101','张三')
insert into 学生表 values('104','李四')
insert into 学生表 values('107','王五')
insert into 学生表 values('111','任六')
insert into 成绩表 values('101','语文',90)
insert into 成绩表 values('101','数学',91)
insert into 成绩表 values('101','英语',92)
insert into 成绩表 values('101','政治',93)
insert into 成绩表 values('104','语文',96)
insert into 成绩表 values('104','数学',70)
insert into 成绩表 values('104','英语',80)
insert into 成绩表 values('104','政治',92)
insert into 成绩表 values('107','语文',70)
insert into 成绩表 values('107','数学',100)
insert into 成绩表 values('107','英语',90)
insert into 成绩表 values('107','政治',98)
insert into 成绩表 values('111','语文',97)
insert into 成绩表 values('111','数学',90)
insert into 成绩表 values('111','英语',99)
insert into 成绩表 values('111','政治',99)
*/
select A.姓名
,(select B.成绩 from 成绩表 B where B.科目='语文' and A.学号=B.学号) as 语文
,(select B.成绩 from 成绩表 B where B.科目='数学' and A.学号=B.学号) as 数学
,(select B.成绩 from 成绩表 B where B.科目='英语' and A.学号=B.学号) as 英语
,(select B.成绩 from 成绩表 B where B.科目='政治' and A.学号=B.学号) as 政治
,(select SUM(B.成绩) from 成绩表 B where A.学号=B.学号) as 总成绩
from 学生表 A order by 总成绩 DESC
查询结果:
--Score == 科目成绩
select A.*, B.总成绩,ROW_NUMBER() OVER (ORDER BY B.总成绩 DESC)
from <表> as A
inner join (
select 人名, sum(科目成绩) as '总成绩' from <表> group by 人名
) as B on A.人名 = B.人名
order by 3 desc