2,704
社区成员




Create Cursor ChengJiBiao (班级 I, 分数 I)
Insert Into ChengJiBiao Values ( 1, 76)
Insert Into ChengJiBiao Values ( 1, 80)
Insert Into ChengJiBiao Values ( 1, 85)
Insert Into ChengJiBiao Values ( 2, 70)
Insert Into ChengJiBiao Values ( 2, 60)
Insert Into ChengJiBiao Values ( 2, 80)
Insert Into ChengJiBiao Values ( 3, 99)
Insert Into ChengJiBiao Values ( 3, 72)
Insert Into ChengJiBiao Values ( 3, 70)
Insert Into ChengJiBiao Values ( 4, 60)
Insert Into ChengJiBiao Values ( 4, 90)
Insert Into ChengJiBiao Values ( 4, 81)
SELECT 班级,AVG(分数) 平均分,SUM(分数) 总分数,000 名次 FROM ChengJiBiao GROUP BY 1 ORDER BY 2 DESC INTO CURSOR Temp READWRITE
* 方法一
Mc=1
Pjf=平均分
SCAN
REPLACE 名次 WITH IIF(平均分=Pjf,Mc,RECNO())
Mc=名次
Pjf=平均分
ENDSCAN
BROWSE
* 方法二
UPDATE Temp SET Temp.名次=(SELECT COUNT(*)+1 FROM Temp Bb WHERE Temp.平均分<Bb.平均分) FROM Temp
SELECT Temp
BROWSE
* 如果记录数超过5000条,建议使用方法一。
*!* 正排名
Select T1.学生ID, T1.分数, Count(T2.分数) + 1 As Rank, ;
Count(Distinct T2.分数) + 1 As Dense_Rank From ChengJiBiao T1 ;
LEFT Join ChengJiBiao T2 On T2.分数 > T1.分数 ;
Group By T1.学生ID, T1.分数 Order By T1.分数 Desc, T1.学生ID
*!* 模拟 SQL 2005 Rank() - 不联号排名,和 Dense_Rank() - 联号排名函数
*!* 解决同分排名问题
Create Cursor ChengJiBiao (学生ID I, 分数 I)
Insert Into ChengJiBiao Values ( 2, 76)
Insert Into ChengJiBiao Values ( 4, 80)
Insert Into ChengJiBiao Values ( 6, 90)
Insert Into ChengJiBiao Values ( 8, 70)
Insert Into ChengJiBiao Values (10, 60)
Insert Into ChengJiBiao Values (12, 80)
Insert Into ChengJiBiao Values (11, 99)
Insert Into ChengJiBiao Values ( 9, 72)
Insert Into ChengJiBiao Values ( 7, 70)
Insert Into ChengJiBiao Values ( 5, 60)
Insert Into ChengJiBiao Values ( 3, 90)
Insert Into ChengJiBiao Values ( 1, 81)
Select T1.学生ID, T1.分数, Count(T2.分数) + 1 As Rank, ;
Count(Distinct T2.分数) + 1 As Dense_Rank From ChengJiBiao T1 ;
LEFT Join ChengJiBiao T2 On T1.分数 > T2.分数 ;
Group By T1.学生ID, T1.分数 Order By T1.分数, T1.学生ID
select 班级id, 平均分, recno() as 名次 ;
from ( ;
select 班级id, Avg(语文) as 平均分 ;
from ChengJiBiao group by 班级id order by 平均分 desc ;
) t
Create Cursor ChengJiBiao (班级ID I, 语文 N(6, 2))
Insert Into ChengJiBiao Values (1, 80)
Insert Into ChengJiBiao Values (1, 90)
Insert Into ChengJiBiao Values (1, 70)
Insert Into ChengJiBiao Values (1, 60)
Insert Into ChengJiBiao Values (1, 80)
Insert Into ChengJiBiao Values (2, 90)
Insert Into ChengJiBiao Values (2, 70)
Insert Into ChengJiBiao Values (2, 70)
Insert Into ChengJiBiao Values (2, 60)
Insert Into ChengJiBiao Values (2, 90)
Insert Into ChengJiBiao Values (2, 80)
Select 班级ID, 语文 As 语文平均分, (Select 1 + Count(语文);
From (Select 班级ID, Avg(语文) As 语文 ;
From ChengJiBiao ;
Group By 班级ID) As t1 ;
Where 语文 > T2.语文) As 平均分名次 ;
From (Select 班级ID, Avg(语文) As 语文 ;
From ChengJiBiao ;
Group By 班级ID) As t2 ;
Order By 班级ID && Desc