2016-10-05 7 views
-1

오라클에서 상위 두 행만 표시하려고하지만 작동하는 모든 항목을 찾을 수 없었습니다.오라클에서 상위 두 행을 선택하십시오.

나는 현재, 그러나이

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 

이 난 단지이 테이블 상단의 두 행을 원한다.

어떻게해야합니까?

+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

나는 그것을 시도했지만 세 번째 행의 값을 변경합니다. 왜 그렇게하는지 알겠습니까? –

0

오라클 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

이제 '예상대로 위치에서 키워드를 찾을 수 없습니다'오류가 발생합니다. –

+0

내 ans를 업데이트했습니다. 지금 확인하십시오. –

관련 문제