프로그래밍/Hadoop ETC 2015. 12. 8. 21:46
특정 조건 하에 랭킹 x 순위 까지 구해야 할 경우가 있다. 예를 들면 일별 접근 횟수 랭킹 10 위까지의 ip를 구하는 경우? 아래와 같이 할 수 있을 것이다. (물론 자신의 사이트(서비스)에 접근할 때마다 로깅을 하여 데이터는 있다는 가정)
select t2.day, t2.ip, t2.cnt  from 
(
   select t1.day, t1.ip, t1.cnt, rank() over (PARTITION BY dd order by cnt desc) as rank from 
   (
      select day, ip, count(ip) as cnt from log where month = '09' group by dd, userip
   ) t1
) t2 where rank < 10;
//