PDA

View Full Version : رتبه بندی با دستور sql



farnoosh66
چهارشنبه 04 دی 1398, 01:01 صبح
سلام دوستان
مشکلی دارم در رابطه با رتبه بندی نمراتم توی sql،




نمره
رتبه


علی
18



رضا
14



حمید
20



محمد
17



رضا
17









همچین جدولی دارم ، چطور میتونم با دستور update دستوری بنویسم که ستون رتبه مثل زیر بشه.






نمره
رتبه


علی
18
2


رضا
14
5


حمید
20
1


محمد
17
3


رضا
17
3





ممنون بابت کمکتون.

hamid_hr
پنج شنبه 12 دی 1398, 12:57 عصر
یه چیزی شبیه این میشه
DECLARE @MainTbl TABLE(name NVARCHAR(10), N tinyint, r smallint)

INSERT INTO @MainTbl
(
name,
N
)
select N'a1', 20
UNION ALL SELECT 'a2' , 19
UNION ALL SELECT 'a3' , 17
UNION ALL SELECT 'a4' , 17
UNION ALL SELECT 'a5' , 15
UNION ALL SELECT 'a6' , 14
UNION ALL SELECT 'a7' , 10

UPDATE t1 SET r = t2.R
FROM @MainTbl t1
LEFT JOIN(SELECT t1.N, COUNT(t2.N) + 1 R
FROM @MainTbl t1
LEFT JOIN @MainTbl t2 ON t1.N < t2.N
GROUP BY t1.N, t1.name) t2 ON t1.N = t2.N

SELECT * FROM @MainTbl