按照人名查出学生的各科成绩以及总成绩并按总成绩排名的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'

参考技术A

按照人名查出学生的各科成绩以及总成绩并按总成绩排名的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'

参考技术B

/*      

        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)

怎么办啊?谢谢大虾

参考技术A 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 zongfen desc "
rs.open sql,conn,1,1追问

错在哪个地方哦?没看出来,先谢过了

追答

order by desc zongfen 写错了
-->order by zongfen desc

追问

我改过来了,还是提示同样的错误代码

以上是关于按照人名查出学生的各科成绩以及总成绩并按总成绩排名的sql语句的主要内容,如果未能解决你的问题,请参考以下文章

怎么在MYSQL查询学生平均成绩及其名次

SQL-考试各科目的成绩以及各科目的参与考试次数

R_Studio(学生成绩)对两个班级学生成绩进行集合,重新计算学生综合测评成绩并对学生按综合测评成绩进行排名

Sql取出各科分数前三名的学生,Sql各科成绩前三的学生

sql语句的学习

查询每个学生的各科成绩sql语句