SELECT 名 , 次数=(SELECT COUNT(DISTINCT 次数) FROM m WHERE 次数 <= m.次数) FROM m
create table m(ID int,名 varchar(10), 次数 int) insert into m values(1, 'A', 1) insert into m values(2, 'B', 3) insert into m values(3, 'C', 2) SELECT 名,排名=(SELECT COUNT(DISTINCT 次数) FROM m WHERE 次数 >= a.次数) FROM m a drop table m/* 名 排名 ---------- ----------- A 3 B 1 C 2(所影响的行数为 3 行) */
create table m(ID int,名 varchar(10), 次数 int) insert into m values(1, 'A', 1) insert into m values(2, 'B', 3) insert into m values(3, 'C', 2) insert into m values(4, 'D', 5) insert into m values(5, 'C', 2)要是都是这些数据呢? 怎么排名?
自己仿照乌龟大哥的写出来了。。 select distinct 名,排名=(select count(distinct 次数)[次数] from (SELECT id,名,sum(次数)[次数] FROM m group by 名,id) a where a.次数>=b.次数) from m b但对于乌龟大哥这里的SELECT COUNT(DISTINCT 次数) FROM m WHERE 次数 >= a.次数并不是太了解。可以讲讲思路么??
select 名,排名=(select count(distinct 次数) from #m where 次数>=a.次数) from #m a order by 排名 结果 __________ 名 排名 ---------- ----------- D 1 B 2 C 3 E 3 A 4_________________select 名,排名=(select count(*) from #m where 次数>=a.次数) from #m a order by 排名结果 ______________ 名 排名 ---------- ----------- D 1 B 2 C 4 E 4 A 5
Update 成绩表 Set a.名次 = ( Select Count(*) + 1 From 成绩表 b Where a.总成绩 < b.总成绩 ) From 成绩表 a
select 名,排名=(select distinct(次数) from m where 次数>=a.次数) from m a
insert into m values(1, 'A', 1)
insert into m values(2, 'B', 3)
insert into m values(3, 'C', 2)
SELECT 名,排名=(SELECT COUNT(DISTINCT 次数) FROM m WHERE 次数 >= a.次数) FROM m a
drop table m/*
名 排名
---------- -----------
A 3
B 1
C 2(所影响的行数为 3 行)
*/
insert into m values(1, 'A', 1)
insert into m values(2, 'B', 3)
insert into m values(3, 'C', 2)
insert into m values(4, 'D', 5)
insert into m values(5, 'C', 2)要是都是这些数据呢?
怎么排名?
select distinct 名,排名=(select count(distinct 次数)[次数] from (SELECT id,名,sum(次数)[次数] FROM m group by 名,id) a where a.次数>=b.次数)
from m b但对于乌龟大哥这里的SELECT COUNT(DISTINCT 次数) FROM m WHERE 次数 >= a.次数并不是太了解。可以讲讲思路么??
select 名,排名=(select count(distinct 次数) from #m where 次数>=a.次数) from #m a order by 排名
结果
__________
名 排名
---------- -----------
D 1
B 2
C 3
E 3
A 4_________________select 名,排名=(select count(*) from #m where 次数>=a.次数) from #m a order by 排名结果
______________
名 排名
---------- -----------
D 1
B 2
C 4
E 4
A 5
Set a.名次 = (
Select Count(*) + 1
From 成绩表 b
Where a.总成绩 < b.总成绩
)
From 成绩表 a