3

皆さんが元気でありますように 私はこのような問題を抱えています。生徒のクラスが試験を受けました。ここで、最も高い評価を得ている上位 3 位の保持者を選びたいと思います。現在の状況は.. 2 人の学生が 100 点を取得し、1 人が 99 点を取得し、1 人が 98 点を取得している場合、上位 3 位に 4 人の学生がいます。

Student1 = 100 marks at first position
Student2 = 100 marks at first position
Student3 = 99 marks at second position
Student4 = 98 marks at thirs position

最初の 3 つの位置でこれら 4 人の学生を取得する方法

Student1 = 100 marks (who is at first position)
Student2 = 100 marks (who is at first position)
Student3 = 99 marks (who is at second position)
while the student4 = 98 at third poistion is missing.

これらすべての学生を選択するための適切なクエリを教えてくれる人はいますか? ありがとう

4

3 に答える 3

5
Select Student,Marks,Rank from (
Select Student,
       Marks,
       Dense_Rank() Over(Order by Marks Desc) as Rank from TableName
    )t 
     where t.Rank<4 
于 2013-07-26T10:49:27.950 に答える
0

次のようなことを試してください(SQLの正確性についてはわかりません):

select * from students where students.mark in (select mark from students order by mark DESC LIMIT 3)

このクエリは 3 つの最高点を取得し、この点のみを持つ学生を取得します

于 2013-07-26T10:49:53.927 に答える
0
 CREATE TABLE BookTitle (
 Id INT NOT NULL,
 NAME VARCHAR(60) NULL,
 Marks INT null
 )
 INSERT INTO BookTitle VALUES (1,'s',100) ,(2,'d',100) ,(3,'e',99),(4,'f',98)

SELECT B.* FROM BookTitle B WHERE 3>=(SELECT COUNT(DISTINCT (A.Marks)) FROM  BookTitle A WHERE A.marks >=B.Marks) 
于 2013-07-26T14:51:03.053 に答える