学号 性别 分数
1 男 80
2 女 90
3 女 88
4 男 80
学号 性别 分数 排名
1 男 80 3
2 女 90 1
3 女 88 2
4 男 80 3
那位大哥告诉我,怎么用单个SQL语句实现上面的表格转换啊..
网友回复:写一个函数 进行分数排序 返回序号即排名
网友回复:问题是我看他问题都没说清楚啊
什么叫表格转换啊?
网友回复:就是增加一个排名吧
select * from (select a.*,rownum as 排名 order by 分数 desc) order by 学号 asc
网友回复:就是增加一个排名吧
select * from (select a.*,rownum as 排名 from 表名 a order by 分数 desc) order by 学号 asc
网友回复:恩,,增加一个排名,还规定只能用一条SQL语句
网友回复:呵呵`楼上都写得oracle的哦.
网友回复:
网友回复:
四楼的语句,数据库通用
网友回复:SELECT S.*,ROWNUM as ROWNUM_ FROM (
SELECT studentNUM,name,point FROM students ORDER BY point DESC
) S ORDER BY studentNUM
测试通过
网友回复:顶一下!!!
网友回复:SQLserver 中又 rownum 吗???
网友回复:题目还说.,.相同分数必须是的排名相同。
网友回复:
ROWNUM可以给我讲讲吗?
这个有点不懂..谢谢..
网友回复:rownum 是 oracle的一个内置的字段,以存放的顺序从小到大排序
网友回复:一样的分数排名不同,没达到要求吧。
网友回复:oracle 在平时的小项目开发中用的可是不是很多
网友回复:以oracle为例:
select t.*,t1.排名 from 表名 t,(select rowNum as 排名,distinct point as 分数 from 表名 order by point desc ) t1 where t.point=t1.分数
没验证过,呵呵
网友回复:用oracle的Rank函数
网友回复:
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> --> (Ben)生成測試數據 if not object_id('Tempdb..#T') is null drop table #T Go Create table #T([学号] int,[性别] nvarchar(1),[分数] int) Insert #T select 1,'男',80 union all select 2,'女',90 union all select 3,'女',88 union all select 5,'女',70 union all select 6,'女',70 union all select 4,'男',80 Go Select * from #T select *,pm=(select count(1) from #T where 分数>a.分数) 1 from #T a order by pm --验证通过
网友回复:
网友回复:假定表1的表名为表1
SQL语句如下:
select a.*,(select count(DISTINCT 分数) from 表1 where 分数>=a.分数) as 排名 from 表1 a order by a.学号
此语句用于MSSQL
网友回复:
网友回复:就是增加一个排名吧
在通过,分数排序