hive 창 열기 함수 전체

2643 단어 hive
-- 창 함수 sum, max,min, avg
SELECT 
cookieid,
createtime,
pv,
SUM(pv) OVER(PARTITION BY cookieid ORDER BY createtime) AS pv1,
SUM(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS pv2,
SUM(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN 1 PRECEDING AND 3 FOLLOWING) AS pv3,
SUM(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS pv4
FROM lxw1234;

-- 창 함수 rownumber,ntile,rank,dense_rank(rows between 지원되지 않음) - rownumber 그룹 랭킹,ntile 슬라이드,rank 그룹 랭킹 공백,denserank 그룹 랭킹 비움
SELECT
cookieid,
createtime,
pv,
ROW_NUMBER() OVER(PARTITION BY cookieid ORDER BY createtime) AS rn,--  ,           ,   createtime    
NTILE(3) OVER(PARTITION BY cookieid ORDER BY createtime) AS rn1,--             3 ,          
RANK() OVER(PARTITION BY cookieid ORDER BY createtime) AS rn2,--  ,            ,             
DENSE_RANK() OVER(PARTITION BY cookieid ORDER BY createtime) AS rn3 -- rank        
FROM lxw1234;

-- 창 함수 LAG, LEAD, FIRSTVALUE,LAST_VALUE - LAD는 통계 창의 세 번째 줄 수를 null로 하고 기본값으로 채우면 LEAD는 반대로 FIRSTVALUE는 현재 행의 첫 번째 값을 가져옵니다. LASTVALUE 가 현재 행의 마지막 값을 가져옴
SELECT
cookieid,
createtime,
pv,
LAG(createtime,1,'1970-01-01 00:00:00') OVER(PARTITION BY cookieid ORDER BY createtime) AS rn,
LEAD(createtime,3,'1970-01-01 00:00:00') OVER(PARTITION BY cookieid ORDER BY createtime) AS rn1,
FIRST_VALUE() OVER(PARTITION BY cookieid ORDER BY createtime) AS rn3,
LAST_VALUE() OVER(PARTITION BY cookieid ORDER BY createtime) AS rn4
FROM lxw1234;

-- 창 함수 CUMEDIST,PERCENT_RANK --CUME_DIST가 현재 값과 같은 줄 수/그룹 내 총 줄 수보다 작음, PERCENTRANK 그룹에서 현재 줄의 RANK 값 - 1/그룹에서 전체 줄 수 - 1
SELECT
cookieid,
createtime,
pv,
CUME_DIST() OVER(PARTITION BY cookieid ORDER BY createtime) AS rn,
PERCENT_RANK() OVER(PARTITION BY cookieid ORDER BY createtime) AS rn1
FROM lxw1234;

-- 창 함수 GROUPING SETS, GROUPING아이디, 큐브, 롤업-큐브는 GROUP BY의 차원의 모든 조합에 따라 집합한다. 롤업은 큐브의 서브집합으로 가장 왼쪽의 차원 위주로 이 차원에서 층층이 집합한다.GROUPING__아이디는 팀번호를 표시한다. 여기서 큐브와 롤업은 주의해야 한다. 롤업은 사실 큐브의 팀번호가 완성된 후에 등급 집합에 속하지 않는 것을 제거할 뿐이다.
SELECT 
month,
day,
COUNT(DISTINCT cookieid) AS uv,
GROUPING__ID 
FROM lxw1234 
GROUP BY month,day 
GROUPING SETS (month,day) 
ORDER BY GROUPING__ID;

SELECT 
month,
day,
COUNT(DISTINCT cookieid) AS uv,
GROUPING__ID 
FROM lxw1234 
GROUP BY month,day 
WITH CUBE
ORDER BY GROUPING__ID;

SELECT 
month,
day,
COUNT(DISTINCT cookieid) AS uv,
GROUPING__ID 
FROM lxw1234 
GROUP BY month,day 
WITH ROLLUP
ORDER BY GROUPING__ID;

좋은 웹페이지 즐겨찾기