반응형
그룹핑 한 후 순위를 매겨주는 함수
SELECT RANK( ) OVER ( PARTITION BY 그룹핑할 칼럼 ORDER BY 정렬할 칼럼 )
FROM 테이블명
( ORDER BY 정렬할 칼럼 DESC or ASC or 생략하면 ASC가 디폴트값 )
이 긴 함수가 한 세트~
PARTITION BY 에 지정한 칼럼 기준으로 그룹핑 해주고
ORDER BY 에 지정한 칼럼 기준으로 정렬해준담에
RANK 행 마다 순위를 매겨준다
ROW_NUMBER() OVER (Partition by _ Order by _)
와의 차이점은
ROW_NUMBER( ) : 1등이 2명이어도 1등, 2등으로 나눔
RANK( ) : 1등이 2명이면 그 다음 순위는 3등으로 매김
예시 쿼리문 )
SELECT s.ip, s.session_id, s.read_time, s.referrer, s.destination
FROM
( SELECT ip, session_id, read_time, referrer,destination,
rank() over (partition by session_id order by read_time) as rnk
FROM public.kinesisraw
where var_date like '2019-02-21' and session_id != '-'
) s
WHERE s.rnk = 1
order by session_id
limit 500;
rank() over (partition by session_id order by read_time) 를 통해
session_id 로 그룹핑하고 ,
read_time 으로 정렬 시킨다.
이렇게 만든 테이블 (서브쿼리) s 와 WHERE s.rnk = 1 조건을 통해
read_time 이 가장 빠른 시간인 session_id 한 줄 씩 추출하게 된다.
즉 2019-02-21 에 session_id 별 첫 접속한 시간을 알 수 있다.
'IT > SQL' 카테고리의 다른 글
[SQL 예문] 브랜드별 매출 국가 순위 TOP 10 (ft. 서브쿼리, Round_number() Over () ) (0) | 2022.03.18 |
---|---|
[SQL 예문] 브랜드별 판매수량, 금액 구하기 (feat. JOIN) (0) | 2022.03.18 |
[SQL 함수] ROW_NUMBER() OVER (Partition by _ Order by _ ) (2) | 2022.03.11 |
[AWS Redshift SQL] DATEDIFF 함수 _ 날짜 차이 구하기 (0) | 2022.03.08 |
[AWS Redshift SQL] 숫자 세 자리 마다 콤마(,) 찍기 / 소수점 자릿수 맞추기 (ft. TO_CHAR) (0) | 2022.03.07 |
댓글