यह चर का उपयोग करके गॉर्डन समाधान का सिर्फ एक फिक्स है। बात यह है कि आपका रैंक फ़ंक्शन उस तरह से नहीं है जैसे रैंक को काम करना चाहिए। (छात्र 4 रैंक 4 होना चाहिए)
SQL Fiddle Demo परीक्षण को बेहतर बनाने के लिए आप और विद्यार्थी जोड़ सकते हैं।
select er.*,
(@rank := if(@points = points,
@rank,
if(@points := points,
@rank + 1,
@rank + 1
)
)
) as ranking
from students er cross join
(select @rank := 0, @points := -1) params
order by points desc;
आउटपुट
| id | points | ranking |
|----|--------|---------|
| 1 | 80 | 1 |
| 2 | 78 | 2 |
| 3 | 78 | 2 |
| 4 | 77 | 3 |
| 5 | 66 | 4 |
| 6 | 66 | 4 |
| 7 | 66 | 4 |
| 8 | 15 | 5 |