hive row_number 그룹 정렬 top
4392 단어 hive.rankrow_number
사용 방법 은 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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Hive 복잡 한 데이터 구조 삽입Hive Hive 기본 데이터 구조 지원 제외 Hive 복잡 한 데이터 구조: 데이터 형식 hive 표 구조 디자인: select :...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.