sql语言的一小问题

来源:百度知道 编辑:UC知道 时间:2024/05/27 03:00:08
姓名 英语 数学 生物 物理学 (表grade )
张三 88 67 79 50
李四 90 40 89 69
王五 77 98 52 70
select 姓名,英语,数学,生物,物理学,英语+数学+生物+物理学 as 总成绩 from grade order by 总成绩
会出现如下结果:
姓名 英语 数学 生物 物理学 总成绩
李四 90 40 89 69 298
王五 77 98 52 70 297
张三 88 67 79 50 284
可是我想知道有没有办法能在前面多出现一列排名如下结果
姓名 英语 数学 生物 物理学 总成绩 名次
李四 90 40 89 69 298 1
王五 77 98 52 70 297 2
张三 88 67 79 50 284 3
各位大侠帮个忙了

select 姓名,英语,数学,生物,物理学,英语+数学+生物+物理学 as 总成绩 ,(select count(*)+1 from grade where 英语+数学+生物+物理学 >a.英语+a.数学+a.生物+a.物理学) as 名次
from grade a order by 总成绩

可以
select 姓名,
英语,
数学,
生物,
物理学,
英语+数学+生物+物理学 as 总成绩 ,
rownum as 名次
from grade a order by 总成绩 asc