티스토리 뷰
728x90
반응형
평상시에 최소값을 구하는 쿼리를 작성할때 MIN() 함수를 많이 이용하였다.
그 이유가 편리해서 그렇지 않을까 싶다...
하지만 최근에 이 함수를 이용하여 조회 처리를 하는 과정에서 제대로된 최소값을 가져오지 못하는 현상을 발견하였다.
컬럼들을 대량으로 가져와야하는 상황에서 MIN() 값을 조회하는 처리하는 경우였는데 이상하게 최소값이 제대로 조회 되었다가 안되었다가하는 상황이 발생했다.
해당 이슈에 대해서 명확한 원인을 찾지못해서 좀 아쉬웠지만 그 대신 다른 방식을 구현하여 해당 건에 대하여 해결하였다.
그래서 필요할 경우 해당 MIN() 방식으로는 처리하기 어려울 경우 해당 공유하는 내용을 종종 이용하려고 한다.
예시
table name = "car"
SNO
|
A
|
B
|
1
|
중형차 |
2
|
2
|
버스
|
3
|
)기존 MIN 함수를 이용하여 최소값 구하는 방식
ex)
SELECT MIN(B) FROM car
결과 : 2
이렇게 이용하면 간단하게 결과 값을 가져올 수 있다. 다만 여러가지 컬럼이 들어가게 될 경우 그룹을 짓는다고 하였을 때 오류를 범하는? 경우를 확인했다 ㅠㅠ
다른 방법
) ROW_NUMBER 를 이용하여 최소값 구하기
SELECT
a.*
FROM (
SELECT
ROW_NUMBER() OVER(PARTITION BY A ORDER BY SNO ASC) AS RNUM,
A,
B
FROM
car
) a
where a.RNUM = 1
결과 : 2
ps : where a.RNUM 을 선언 안할 경우
RNUM | A | B
1 | 중형차 | 2
2 | 버스 | 3
ROW_NUMBER 를 이용하여 해당 부분을 처리 했었다.
ROW_NUMBER 의 PARTITION BY 안에 정렬 순서 조건을 주어짐으로써 최대값과 최소값을 구할 수가있다.
느낀점..
MIN() 함수를 사용하면서 처음 겪었던 이상한 이슈였는데 어떻게 보면 지식이 부족하여 제대로 사용 못한게 아닌가 하는 생각이 든다. 이번 경험을 통해 새로운 지식을 얻었다고 생각한다. 그래서 이슈에 대한 부분은 조금 더 공부를 통해 성장하는 개발자가 되고자 한다.
728x90
반응형
'데이터베이스 > ORACLE' 카테고리의 다른 글
ORACLE EXISTS, NOT EXISTS 사용법 정리 (0) | 2023.06.05 |
---|
250x250
반응형
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 캐시
- Java
- 컨테이너
- 권한
- Cache
- 격리수준
- docker
- dockerfile
- 캘린더
- 리눅스
- 정의
- LocalDate
- 이미지
- Linux
- 스케줄러
- dfs
- ncp
- Lock
- leatcode
- insert
- centos7
- spring
- 알고리즘
- 네이버 클라우드
- hazelcast
- mybatis
- 개념 이해하기
- 도커
- MySQL
- Quartz
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함