쿼리를 짜다보면 예를들어 테이블에서 일자별로
그룹지어서 조회를
하는데 일자에서 그룹을사용 했으니 다른 컬럼을
대상으로 그룹함수인 max같은걸써서 조회를
헸다. 그런데 해당 최대값이 같은값으로 여러개인 상태에서
그 최대값 컬럼중에서 1개만
선택되야 하고 해당 row의 ID 까지 필요한 상황이 있다. -_-;;
이때 사용하는 함수가 row_number() over(partition by ..) 함수이다.
사용방법은
select row_number() over(partition by mytable.특정컬럼 order by mytable.정렬기준컬럼) as rnum,mytable.* from mytable) as tb where rnum = 1
이렇게 된다. row_number() over(partition by mytable.특정컬럼 order by mytable.정렬기준컬럼) as rnum 이 넘이 특정컬럼을 기준으로 orderby 순서로 순위를 매길수 있다. 1..2..3..4
그래서 이걸 서브쿼리로 감싸서 where 조건절에서 rnum = 1 인것만 취하면
그룹된 컬럼이 있으면 서 ID까지 존재하는 조회결과가 나온다.
특별한 상황이지만 요로코롬하면 된다.
댓글 없음:
댓글 쓰기