2016-10-05 10 views
-1

私はOracleの上位2行だけを表示しようとしていますが、動作するものは何も出くわしませんでした。Oracleの上位2行を選択してください

は、私は現在、しかしこの

B2  A  18.67 
B4  B  17.57 
B3  C  15.44 
B1  D  13.99 

返し

SELECT BRANCH.BRANCHID, BRANCHNAME, AVG(SESSIONPRICE) 
FROM BRANCH, SESSIONS 
WHERE SESSIONS.BRANCHID = BRANCH.BRANCHID 
GROUP BY BRANCHNAME, BRANCH.BRANCHID 
ORDER BY AVG(SESSIONPRICE) DESC 

を持っている私は、この表の上部の2つの行をしたいです。

どのように私はこれを行うのですか?

+0

'最初の2行をフェッチを取得しますonly' https://docs.oracle.com/database/121/SQLRF/statements_10002.htm#BABBADDD –

+1

[検索](http: //stackoverflow.com/questions/470542/how-do-i-limit-the-number-of-rows-returned-by-an-oracle-query-after-ordering)? – Aleksej

+0

ええ、私は解決策を見つけることができませんでした。私は2週間ほどSQLを学んでいました。だから私は理解できません。 –

答えて

-1

私は答え再編集していた:

SELECT * 
FROM (SELECT BRANCH.BRANCHID, BRANCHNAME, AVG(SESSIONPRICE) 
FROM BRANCH, SESSIONS 
WHERE SESSIONS.BRANCHID = BRANCH.BRANCHID 

GROUP BY BRANCHNAME, BRANCH.BRANCHID 
ORDER BY AVG(SESSIONPRICE) DESC 
) 
WHERE ROWNUM <= 2; 
+0

これは正しく動作しません。詳細は、マニュアルを参照してください。https://docs.oracle.com/database/121/SQLRF/pseudocolumns009.htm#SQLRF00255 –

+0

非常にありがとう、編集したものが完全に機能します。どうもありがとう! –

+0

彼の助けにa_horse_with_no_nameに感謝します。 –

-2

使用ROWNUM:

返されるレコードの数を指定するために使用されます。

  SELECT BRANCH.BRANCHID, BRANCHNAME, AVG(SESSIONPRICE) 
      FROM BRANCH, SESSIONS 
      WHERE 
      ROWNUM <= 2 and SESSIONS.BRANCHID = BRANCH.BRANCHID 
      GROUP BY BRANCHNAME, BRANCH.BRANCHID 
      ORDER BY AVG(SESSIONPRICE) DESC ; 
+0

私はそれを試みましたが、それは3番目の行の値を変更します。それがなぜそれを知っていますか? –

0

のOracle 9iのから以降、RANK()とDENSE_RANK()関数は、TOP N行を決定するために使用することができます。例:

トップ2 BRANCH使用RANK()

SELECT ename, sal 
    FROM (SELECT BRANCH.BRANCHID, BRANCHNAME, AVG(SESSIONPRICE) RANK() OVER (ORDER BY AVG(SESSIONPRICE) DESC) avg_rank 
      FROM BRANCH) 
WHERE avg_rank<= 2; 

を取得DENSE_RANKを使用してトップ2 BRANCH()

SELECT ename, sal 
    FROM (SELECT BRANCH.BRANCHID, BRANCHNAME, AVG(SESSIONPRICE) DENSE_RANK() OVER (ORDER BY AVG(SESSIONPRICE) DESC) avg_Dense_rank 
      FROM BRANCH) 
WHERE avg_Dense_rank<= 2; 
+0

今、私はちょうど 'FROMキーワードが見つかりませんでした'というエラーが表示されました。 –

+0

は私のansを今すぐ更新しました。 –

関連する問題