0

ゴール

私は学生のテーブルを持っています。詳細を表示する必要があります。nameテストで最高点を取った生徒。

テーブルの定義

以下は、テーブルの定義のコードです:( http://www.sqlfiddle.comtext to ddlのオプションを使用してこれを作成しました)

CREATE TABLE STUDENT
    ("NAME" varchar2(1), "MARKS" int)
;

私が挿入したいくつかのレコード:

INSERT ALL 
    INTO STUDENT ("NAME", "MARKS")
         VALUES ('A', 17)
    INTO STUDENT ("NAME", "MARKS")
         VALUES ('B', 18)
    INTO STUDENT ("NAME", "MARKS")
         VALUES ('C', 19)
    INTO STUDENT ("NAME", "MARKS")
         VALUES ('D', 90)
    INTO STUDENT ("NAME", "MARKS")
         VALUES ('E', 50)
    INTO STUDENT ("NAME", "MARKS")
         VALUES ('F', 23)
SELECT * FROM dual
;

これを達成するクエリを手伝ってください。

http://www.sqlfiddle.comのOracle 11g R2の仕様

Windows マシンで。

4

2 に答える 2

3
于 2013-03-29T15:31:38.347 に答える
1

これを行う最も簡単な方法は、データを並べ替えて最初の行を取得することです。

select *
from (select s.*
      from student s
      order by mark desc
     ) s
where rownum = 1;

別の方法は、分析関数を使用することです。

select *
from (select s.*, row_number() over (order by mark desc) as seqnum
      from student s
      order by mark desc
     ) s
where seqnum = 1;

に置き換えるrow_number()rank()、最高点の生徒全員が取得されます。

于 2013-03-29T17:14:22.877 に答える