กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
313 3
URL.หัวข้อ /
URL
อันดับที่ของคะแนนที่สอบได้
เมื่อเรียงตามเลขที่ เมื่อเรียงตามคะแนน
เลขที่ คะแนน | เลขที่ คะแนน สอบได้ที่ (เป็นField ที่อยากได้)
1 78 | 4 88 1
2 64 | 6 82 2
3 55 | 5 79 3
4 88 | 1 78 4
5 79 | 8 78 4
6 82 | 9 69 6
7 64 | 2 64 7
8 78 | 7 64 7
9 69 | 10 56 9
10 56 | 3 55 10
คือต้องการให้คนที่สอบได้คะแนนมากที่สุดได้ที่ 1 ถัดมาคนได้คะแนนรองลงมาสอบได้ที่ 2 , 3
**แต่**คนที่ได้คะแนนซ้ำกันคือคะแนน 78 คะแนนจะต้องได้ที่ 4 ทั้ง 2 คน ถัดมาจึงเป็นที่ 6
และเป็นเช่นนี้ไปเรื่อยดังตัวอย่างข้างบน
จะมีวิธีทำยังไงบ้างครับ?
เลขที่ คะแนน | เลขที่ คะแนน สอบได้ที่ (เป็นField ที่อยากได้)
1 78 | 4 88 1
2 64 | 6 82 2
3 55 | 5 79 3
4 88 | 1 78 4
5 79 | 8 78 4
6 82 | 9 69 6
7 64 | 2 64 7
8 78 | 7 64 7
9 69 | 10 56 9
10 56 | 3 55 10
คือต้องการให้คนที่สอบได้คะแนนมากที่สุดได้ที่ 1 ถัดมาคนได้คะแนนรองลงมาสอบได้ที่ 2 , 3
**แต่**คนที่ได้คะแนนซ้ำกันคือคะแนน 78 คะแนนจะต้องได้ที่ 4 ทั้ง 2 คน ถัดมาจึงเป็นที่ 6
และเป็นเช่นนี้ไปเรื่อยดังตัวอย่างข้างบน
จะมีวิธีทำยังไงบ้างครับ?
3 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R05165
แบบนี้จะได้อย่างที่ต้องการครับ
SELECT tblScores.ID, tblScores.Scores,
(Select Count([Scores])
from tblScores as Temp
Where Temp.Scores > tblScores.Scores)+1 AS Rank
FROM tblScores
ORDER BY tblScores.Scores DESC;
SELECT tblScores.ID, tblScores.Scores,
(Select Count([Scores])
from tblScores as Temp
Where Temp.Scores > tblScores.Scores)+1 AS Rank
FROM tblScores
ORDER BY tblScores.Scores DESC;
3 @R05166
จะลองนำไปใช้ดูครับ
ขอบคุณมากเลยครับ
ขอบคุณมากเลยครับ
Time: 0.1379s
สมมติว่า ตารางเป้าหมายชื่อ tblScores มี 2 ฟีลด์คือ ID และ Scores เป็น Number ทั้งคู่ จะได้
SELECT tblScores.ID, tblScores.Scores,
(Select Count([Scores])
from tblScores as Temp
Where Temp.Scores >= tblScores.Scores)
AS Rank
FROM tblScores
ORDER BY tblScores.Scores DESC;