해당 테이블 내의 동일한 값이 가장 많은 값 0 2 1,670

by 구기웅 [SQL Query] [2014.05.29 19:12:18]


안녕하세요. 오라클 초보 입니다.ㅠ

다름이 아니라 해당 테이블에 저장된 값 예를 들어 id likeme date 를 저장해놓은 likeuser 라는 테이블에서 

likeuser 테이블 내의 id 컬럼에 동일한 값들이 들어가 있습니다. 예를 들면 내가 좋아요를 누른 사람의 id 가 들어갑니다.

id 의 동일한 값이 가장 많은 순서로 데이터를 추출하려고 하는데요 .. 어떤식으로 해야 할지 막막해서 문의 드립니다.

기본적인 select 문도 제대로 못만들다 보니 ... 도움 부탁드립니다. 감사합니다

 

by 마농 [2014.05.30 08:17:29]
-- id 별로 집계하신 후 정렬하시면 되구요.
-- 전체 다 나오려면 시간도 많이 걸리고, 다 나올 필요도 없을 것입니다.
-- 상위 몇명만 뽑는 방식으로 하시면 됩니다.
-- 1. ROWNUM 을 이용하는 방법 --
SELECT ROWNUM rn
     , id
     , cnt
  FROM (SELECT id
             , COUNT(*) cnt
          FROM likeuser
         GROUP BY id
         ORDER BY cnt DESC
        )
 WHERE ROWNUM <= 10
;
-- 2. 분석함수 RANK 을 이용하는 방법 --
SELECT rk
     , id
     , cnt
  FROM (SELECT id
             , COUNT(*) cnt
             , RANK() OVER(ORDER BY COUNT(*) DESC) rk
          FROM likeuser
         GROUP BY id
        )
 WHERE rk <= 10
;

 


by 구기웅 [2014.05.30 15:53:22]

마농님 정확한 답변 및 너무 친절한 쿼리 감사합니다.

덕분에 잘 해결 하였습니다. 더 열심히 공부 해야 함을 다시한번 느낍니다..ㅠ

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