排名位置问题

lwllp2007 2009-10-17 11:46:00
表A
名称 数量
a 20
b 10
c 50
d 12
e 30
.......


实现效果

名称 排名
a 3
b 5
c 1
d 4
e 2
.........

用sql的临时表或自增列之类的已经可以实现

能否通过计算的方式实现?比如类似
总数+当前数量/条数之类的
...全文
90 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ws_hgo 2009-10-17
  • 打赏
  • 举报
回复
你5楼
说的方法
貌似没有见过
ws_hgo 2009-10-17
  • 打赏
  • 举报
回复
不好意思没有看清楚题目
ws_hgo 2009-10-17
  • 打赏
  • 举报
回复
declare @TT Table
(
名称 varchar(20),
数量 int
)
insert into @TT select 'a',20
union all select 'b',10
union all select 'c',50
union all select 'd',12
union all select 'e',30
--sql2005
select identity(int,1,1) as ID,* into #1 from @TT

select 名称,rank from
(
select *,row_number() over (order by 数量 desc) rank from #1
) TT order by ID ASC
--sql2000
select identity(int,1,1) as ID,* into #1 from @TT
select 名称,(select count(*)+1 from #1 where t.数量<数量)rank from #1 t
lwllp2007 2009-10-17
  • 打赏
  • 举报
回复
感谢上面朋友的回答,思路也很好,两个问题

1 我上面说过了,用sql处理的方式我已经知道怎么实现
2 我想知道的是有没有纯数字的算法,比如类似
总数+当前数量/条数之类的


最后说下,我用的是sql2000,不是2005呵呵
ws_hgo 2009-10-17
  • 打赏
  • 举报
回复
可以结贴啦
ws_hgo 2009-10-17
  • 打赏
  • 举报
回复
修改下
declare @TT Table
(
名称 varchar(20),
数量 int
)
insert into @TT select 'a',20
union all select 'b',10
union all select 'c',50
union all select 'd',12
union all select 'e',30

select identity(int,1,1) as ID,* into #1 from @TT

select 名称,rank from
(
select *,row_number() over (order by 数量 desc) rank from #1
) TT order by ID ASC

名称 rank
-------------------- --------------------
a 3
b 5
c 1
d 4
e 2
lei19890721 2009-10-17
  • 打赏
  • 举报
回复
他的名称a b c d e 没有变
ws_hgo 2009-10-17
  • 打赏
  • 举报
回复
declare @TT Table
(
名称 varchar(20),
数量 int
)
insert into @TT select 'a',20
union all select 'b',10
union all select 'c',50
union all select 'd',12
union all select 'e',30
select 名称,rank from
(
select *,row_number() over (order by 数量) rank from @TT
) TT


名称 rank
-------------------- --------------------
b 1
d 2
a 3
e 4
c 5

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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