求sql语句

davytao1018 2007-02-12 04:40:35
有记录:
uname,uemail,score
-----------------------
a a@126.com 2
b b@yhaoo.com.cn 2
c c@56.com 1
d d@gmail.com 1
e e@163.com 0

要求查询结果:
uname,uemail,score,sequence
-----------------------------
a a@126.com 2 1
b b@yhaoo.com.cn 2 1
c c@56.com 1 3
d d@gmail.com 1 3
e e@163.com 0 5

sequence的值根据score排序而得
...全文
215 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
w75251455 2007-02-12
  • 打赏
  • 举报
回复
嗯~~
为做题而来~~~方法很多~~不能重复!
WangZWang 2007-02-12
  • 打赏
  • 举报
回复
--正确的方法
Select *, sequence=(Select count(*) from 表 where score>t.score)+1
from 表 as t

--SQL2005
Select *, Rank() over (order by score desc) as sequence
from 表 as t
w75251455 2007-02-12
  • 打赏
  • 举报
回复
create table tt(uname char(10),uemail char(20),score int)
insert tt select 'a', 'a@126.com', 2
union all select 'b', 'b@yhaoo.com.cn', 2
union all select 'c', 'c@56.com', 1
union all select 'd', 'd@gmail.com', 1
union all select 'e', 'e@163.com', 0

select *,
(select count(1)-(select count(1)-1 from tt c where c.score=a.score)from tt b where b.score>=a.score)nce
from tt a


/*
uname uemail score nce
a a@126.com 2 1
b b@yhaoo.com.cn 2 1
c c@56.com 1 3
d d@gmail.com 1 3
e e@163.com 0 5
*/
marco08 2007-02-12
  • 打赏
  • 举报
回复
create table T(uname char(1), uemail varchar(20), score int)
insert T select 'a', 'a@126.com', 2
union all select 'b', 'b@yhaoo.com.cn', 2
union all select 'c', 'c@56.com', 1
union all select 'd', 'd@gmail.com', 1
union all select 'e', 'e@163.com', 0

select *,
[sequence]=(select col=count(*) from T where uname<=tmp.uname)
into #T
from T as tmp
order by score desc

select uname, uemail, score,
[sequence]=(select min([sequence]) from #T where score=tmp.score)
from #T as tmp

--result
uname uemail score sequence
----- -------------------- ----------- -----------
a a@126.com 2 1
b b@yhaoo.com.cn 2 1
c c@56.com 1 3
d d@gmail.com 1 3
e e@163.com 0 5

(5 row(s) affected)
hrb2008 2007-02-12
  • 打赏
  • 举报
回复
select uname,uemail,score,mc=(select count(1) from table where uname=a.uname and score>=a.score) from table a
hrb2008 2007-02-12
  • 打赏
  • 举报
回复
select uname,uemail,score,mc=(select count(1) from table where score>=a.score) from table a
wangdehao 2007-02-12
  • 打赏
  • 举报
回复
Select *, sequence=(Select count(*) from 表 where score>t.score)+1
from 表 as t
WangZWang 2007-02-12
  • 打赏
  • 举报
回复
Select *, sequence=(Select count(*) from 表 where score>=t.score)
from 表 as t

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧