sql 笔试题(五)

学号 性别 分数
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的哦.
网友回复:

引用 4 楼 wangxf_8341 的回复:
就是增加一个排名吧
select * from (select a.*,rownum as 排名 from 表名 a order by 分数 desc) order by 学号 asc


网友回复:

引用 6 楼 tacoley 的回复:
呵呵`楼上都写得oracle的哦.



四楼的语句,数据库通用
网友回复:SELECT S.*,ROWNUM as ROWNUM_ FROM (
SELECT studentNUM,name,point FROM students ORDER BY point DESC
) S ORDER BY studentNUM

测试通过
网友回复:顶一下!!!
网友回复:SQLserver 中又 rownum 吗???
网友回复:题目还说.,.相同分数必须是的排名相同。
   
网友回复:

引用 9 楼 javaiswhat 的回复:
SELECT S.*,ROWNUM as ROWNUM_ FROM (
SELECT studentNUM,name,point FROM students ORDER BY point DESC
) S ORDER BY studentNUM

测试通过



  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函数
网友回复:

SQL code


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



--验证通过




网友回复:

引用 4 楼 wangxf_8341 的回复:
就是增加一个排名吧
select * from (select a.*,rownum as 排名 from 表名 a order by 分数 desc) order by 学号 asc


网友回复:假定表1的表名为表1

SQL语句如下:
select a.*,(select count(DISTINCT 分数) from 表1 where 分数>=a.分数) as 排名 from 表1 a order by a.学号

此语句用于MSSQL
网友回复:

引用 19 楼 th199 的回复:
SQL code

--> --> (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 wher…


网友回复:就是增加一个排名吧
在通过,分数排序

<!---->

你可能感兴趣的:(oracle,sql,Go)