hive row_number 그룹 정렬 top

4392 단어 hive.rankrow_number
Hive 0.11.0 부터 orcle 와 유사 한 분석 함 수 를 추가 하여 강력 하여 그룹 정렬 top 값 을 조회 할 수 있 습 니 다
사용 방법 은 Oacle 과 다 르 지 않 습 니 다.
 
작은 예 를 붙이다
같은 동작 에서 pv 10 위 권 의 사용 자 를 조회 합 니 다.
select
*
,row_number() OVER(PARTITION BY t3.action ORDER BY pv desc) AS flag
from
(
select 
action
,uuid
,count(1) as pv
from logtable t
group by t.action,uuid
)  t1
where t1.flag<=10

 
 
 
 
 
Oacle rank 댓 글 하나 붙 여 주세요.
rank,dense_rank,row_number 구별
1: 문법 (용법):     rank() over([partition by col1] order by col2)      dense_rank() over([partition by col1] order by col2)      row_number() over([partition by col1] order by col2)      그 중 [partition by col1] 은 생략 할 수 있 습 니 다.
구별    세 개의 분석 함 수 는 모두 col 1 그룹 내 에서 1 부터 정렬 합 니 다.        row_number () 는 중복 값 이 없 는 정렬 (이틀 기록 이 같 더 라 도 중복 되 지 않 음) 으로 페이지 를 나 눌 수 있 습 니 다.    dense_랭 킹 () 은 연속 정렬 이 고, 두 번 째 는 여전히 3 등 을 따른다.    rank()       점프 촬영 학 입 니 다. 2 등 하면 4 등 입 니 다.        이론 은 더 말 하지 않 고, 사례 를 보고 단번에 알 게 되 었 다.    SQL> create table t(  2   name varchar2(10),  3   score number(3)); Table created SQL> insert into t(name,score)   2   select '국어', 60 from dual 듀 얼 union 유 니 온 all  3   select '국어', 90 from dual 듀 얼 union 유 니 온 all  4   select '국어', 80 from dual 듀 얼 union 유 니 온 all  5   select '국어', 80 from dual 듀 얼 union 유 니 온 all  6   select '수학', 67 from dual 듀 얼 union 노동 조합 all  7   select '수학', 77 from dual 듀 얼 union 유 니 온 all  8   select '수학', 78 from dual 듀 얼 union 유 니 온 all  9   select '수학', 88 듀 얼 유 니 온 all 10   select '수학', 99 듀 얼 유 니 온 all 11   select '국어', 70 from dual 12  / 10 rows inserted SQL> select * from t; NAME       SCORE - 국어          60 국어          90 국어          80 국어          80 수학          67 수학          수학          수학          88 수학          99 국어          70 10 rows selected SQL> select name,score,rank() over(partition by name order by score) tt from t; NAME       SCORE         수학          67          수학          77          수학          78          3 수학          88          수학          99          5 국어          60          국어          70          국어          80          3   <----국어          80          3   <----국어          90          5 10 rows selected SQL> select name,score,dense_rank() over(partition by name order by score) tt from t; NAME       SCORE         수학          67          수학          77          수학          78          3 수학          88          수학          99          5 국어          60          국어          70          국어          80          3   <----국어          80          3   <----국어          90          4 10 rows selected SQL> select name,score,row_number() over(partition by name order by score) tt from t; NAME       SCORE         수학          67          수학          77          수학          78          3 수학          88          수학          99          5 국어          60          국어          70          국어          80          3  <----국어          80          4  <----국어          90          5 10 rows selected SQL> select name,score,rank() over(order by score) tt from t; NAME       SCORE         TT ------------ 국어          60          수학          67          국어          70          3 수학          77          수학          78          5 국어          80          국어          80          수학          88          8 국어          90          수학          99         10 10 rows selected 
아 시 겠 죠!허허!이제 애플 리 케 이 션 을 보 겠 습 니 다.
1: dense각 과목 의 3 등 을 조회 하 다.
  select name,score from (select name,score,dense_rank() over(partition by name order by score desc) tt from t) x where x.tt<=3   NAME       SCORE - 수학          99 수학          88 수학          국어          90 국어          80 국어          80 6 rows selected
국어 성적 70 점 을 받 은 학생 은 몇 위 입 니까?   select name, score, x. tt from (select name, score, rank () over (partition by name order by score desc) t from t) x where x. name = '국어' 및 x. score = 70  NAME       SCORE         TT ------------ 국어          70          4    3: rownumber -- -- 페이지 별 조회     select xx.* from (select t.*,row_number() over(order by score desc) rowno from t) xx where xx.rowno between 1 and 3; NAME       SCORE      수학          99          국어          90          수학          88          3

좋은 웹페이지 즐겨찾기