쿼리 조합 방법을 모르겠습니다... 0 6 518

by 댕댕구 [2021.08.25 20:40:47]


이것 참... 너무 질문을 많이하는 게 부끄러워서 스스로 해보려고 노력하는데 막히는 부분에서는 너무 막히네요.... 

 

SELECT SURVEY_CNT,ROW_NUMBER() OVER (ORDER BY SURVEY_CNT DESC) AS RANK FROM survey

 


   select * from survey where rownum = 1

 

위 두개의 쿼리문을 어떻게 조합할 수 있을까요...?

귀찮으실텐데 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ 

---- 수정 ---- 

select * from (select SURVEY_CNT, ROW_NUMBER() OVER (ORDER BY SURVEY_CNT DESC) AS RANK FROM survey) where rownum = 2;

rownum = 1을 했을 때는 데이터가 뽑히는데 2로 하면 데이터가 안뽑히네요... 

 

by 마농 [2021.08.26 08:05:58]

기존 질문의 답변에 이미 해답이 있는데요? http://gurubee.net/article/84700
rownum 을 이용할게 아니라 row_number() 에 대한 알리아스를 이용해 조건을 주시면 됩니다.
다만, Rank 와 같은 시스템 예약어를 별칭으로 사용하는 것은 좋지 않습니다.

SELECT *
  FROM (SELECT survey_cnt
             , ROW_NUMBER() OVER(ORDER BY survey_cnt DESC) rn
          FROM survey
        )
 WHERE rn = 2
;

그리고 survey_cnt 는 동순위가 나올 수 있는 값입니다.
동순위 처리에 대한 고민을 해보셨는지요?
2등이 2명일 경우 둘 다 나와야 할지 우선적으로 선택할 추가 기준이 있는지? 등


by 댕댕구 [2021.08.26 14:01:36]

마농님 감사합니다 기존 질문을 복붙하면 안될 것 같아서 제 나름대로 바꿔보다보니 정리가 안되서 다시 올렸습니다 ㅠㅠ... 

동순위 부분은 전혀 고려하지 않았네요.. 만약 동순위라면 등록일자가 더 빠른 기준이라면 어떤 쿼리문을 사용할 수 있을까요...?


by 마농 [2021.08.26 14:03:26]
-- 정렬기준 등록일자 추가 --
SELECT *
  FROM (SELECT survey_cnt
             , ROW_NUMBER() OVER(ORDER BY survey_cnt DESC, survey_regdate) rn
          FROM survey
        )
 WHERE rn = 2
;

-- 등록일자도 중복 가능할 것 같은데요? 유일키인 id 를 추가하세요.
SELECT *
  FROM (SELECT survey_cnt
             , ROW_NUMBER() OVER(ORDER BY survey_cnt DESC, survey_regdate, survey_id) rn
          FROM survey
        )
 WHERE rn = 2
;

 


by 댕댕구 [2021.08.26 14:53:17]

마농님 정말 고맙습니다 ㅠㅠㅠㅠㅠ 한줄기 빛이십니다 ㅠㅠㅠ 

혹시... 하나만 더 질문드려도 될까요? 

답변주신 부분과 더불어서  1개만 뽑는게 아니라 순위와 등록일자, 유일키 id로 정렬한 전체 목록이 나오는 쿼리는 뭘 추가하면 될까요...? 


by 마농 [2021.08.26 15:39:04]

SQL 기초부터 다지셔야 할 것 같습니다.
http://gurubee.net/oracle/sql
 

SELECT survey_id
     , question_type
     , survey_title
     , user_name
     , survey_cnt
     , survey_regdate
     , survey_enddate
     , survey_isopen
     , ROW_NUMBER() OVER(ORDER BY survey_cnt DESC, survey_regdate, survey_id) rn
  FROM survey
;

 


by 댕댕구 [2021.08.26 15:41:44]

헉 이런 강좌가 있었네요... 열심히 공부하겠습니다 ㅠㅠㅠㅠ 감사합니다!!!!

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