쿼리문 질문 드립니다..(무조건 상위3개 데이터만 출력하기) 0 1 703

by 성공한다 [Oracle 기초] [2018.10.15 19:05:33]


안녕하세요..

만약
select seq_no, kname , flag
from student
where flag ='1'
order by seq_no asc ;

seq_no kname flag
1 홍길동 1
2 이순신 1
3 세종대왕 1
4 김시민 1


(flag가 1이면 출력) 무조건 상위 3번째까지만 출력할수 있는 방법 없을까요..?
between seq_no '1' and '3' 이렇게하면 seq_no가 1~3까지 가지고 있는 데이터만 출력이 되는데...
만약 seq-no가 '3' 이  flag가 '0'이면 1,2만 출력이 되지 않고 1,2,4가 출력이 될수 있는 방법이 있을까요 ㅠ

by 마농 [2018.10.15 19:18:27]
-- 1. 정렬 후 Rownum
SELECT *
  FROM (SELECT seq_no, kname, flag
          FROM student
         WHERE flag ='1'
         ORDER BY seq_no
        )
 WHERE ROWNUM <= 3
;
-- 2. Row_number
SELECT *
  FROM (SELECT seq_no, kname, flag
             , ROW_NUMBER() OVER(ORDER BY seq_no) rn
          FROM student
         WHERE flag ='1'
        )
 WHERE rn <= 3
;
-- 3. fetch (12C)
SELECT seq_no, kname, flag
  FROM student
 WHERE flag ='1'
 ORDER BY seq_no
 FETCH FIRST 3 ROWS ONLY
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입