按照人名查出学生的各科成绩以及总成绩并按总成绩排名的sql语句
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了按照人名查出学生的各科成绩以及总成绩并按总成绩排名的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"/>
扩展资料
上述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'
/*
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
查询结果:
本回答被提问者采纳 参考技术C --StudentName == 人名--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
asp:查询每个学生的各科成绩,总分,平均分的sql语句
只有一个score表,字段是:xjh name zuohao xueke score
L001 张三 01 语文 65
L002 李四 02 数学 85
L001 张三 01 数学 75
L002 李四 02 语文 55
我想要的结果是: xjh name zuohao yuwen shuxue zongfen pjf
L001 张三 01 65 75 140 70
L002 李四 02 55 85 140 70
下面是我的sql语句:
dim rs,sql,sql2,zt,ck,nf,xq,cx,bj,bjmc,info
nf="2016"
xq="春季学期"
cx="期中考试"
bjmc="小学2012级3班"
set rs=server.CreateObject("Adodb.Recordset")
sql="select zuohao,name,xjh,"
sql=sql&"sum(case when xueke='语文' then score else 0 end) as yuwen,"
sql=sql&"sum(case when xueke='数学' then score else 0 end) as shuxue,"
sql=sql&"sum(case when xueke='英语' then score else 0 end) as yingyu,"
sql=sql&"sum(case when xueke='综合' then score else 0 end) as zhonghe,"
sql=sql&"sum(score) as zongfen,"
sql=sql&"sum(score)*1.0/4 as pjf"
sql=sql&" from score where nianfen='"&nf&"' and xueqi='"&xq&"' and cixu='"&cx&"' and bjmc='"&bjmc&"' group by zuohao,name,xjh order by desc zongfen"
rs.open sql,conn,1,1
提示错误:错误 '80004005' ,/StudentScore.asp,行 92 (注:92行就是:rs.open sql,conn,1,1)
怎么办啊?谢谢大虾
nf="2016"
xq="春季学期"
cx="期中考试"
bjmc="小学2012级3班"
set rs=server.CreateObject("Adodb.Recordset")
sql="select zuohao,name,xjh,"
sql=sql&"sum(case when xueke='语文' then score else 0 end) as yuwen,"
sql=sql&"sum(case when xueke='数学' then score else 0 end) as shuxue,"
sql=sql&"sum(case when xueke='英语' then score else 0 end) as yingyu,"
sql=sql&"sum(case when xueke='综合' then score else 0 end) as zhonghe,"
sql=sql&"sum(score) as zongfen,"
sql=sql&"sum(score)*1.0/4 as pjf"
sql=sql&" from score where nianfen='"&nf&"' and xueqi='"&xq&"' and cixu='"&cx&"' and bjmc='"&bjmc&"' group by zuohao,name,xjh order by zongfen desc "
rs.open sql,conn,1,1追问
错在哪个地方哦?没看出来,先谢过了
追答order by desc zongfen 写错了
-->order by zongfen desc
我改过来了,还是提示同样的错误代码
以上是关于按照人名查出学生的各科成绩以及总成绩并按总成绩排名的sql语句的主要内容,如果未能解决你的问题,请参考以下文章