반응형
SELECT [col1], ... , [coln]
FROM (
SELECT [col1], ... , [coln],
ROW_NUMBER() OVER(PARTITION BY [col1] ORDER BY [coln] ASC) as index
FROM [table]
) AS res
WHERE index = 1
그룹분류를 원하는 컬럼은 col1, 구해야 할 최소 최대값 컬럼은 coln 에 위치한다.
그룹별 분류 및 최소, 최대값을 가져오기 위한 정렬 후 함께 SELECT를 원하는 컬럼은 col1, coln 사이에 위치시킨다.
Example)
bgroupseq | ... | bmanagerranking |
1 | ... | 100 |
1 | ... | 200 |
1 | ... | 300 |
2 | ... | 100 |
2 | ... | 200 |
3 | ... | 100 |
3 | ... | 200 |
SELECT bgroupseq, ..., bmanagerranking
FROM (
SELECT bgroupseq, ..., bmanagerranking,
ROW_NUMBER() OVER(PARTITION BY bgroupseq ORDER BY bmanagerranking ASC) as index
FROM board
) AS manager
WHERE index = 1
bgroupseq | ... | bmanagerranking | |
1 | ... | 100 | |
2 | ... | 100 | |
3 | ... | 100 |
- bgroupseq 컬럼에 존재하는 동일한 값을 그룹으로 묶고 그룹별로 정렬(ORDER BY bmanagerranking ASC) 후 첫번째 값을 가져온다.
- 정렬방식 ASC : 최소값, DESC : 최대값
- 이외에 SELECT를 원하는 컬럼들은 bgroupseq, bmanagerranking 사이에 위치시키면 된다.
반응형
'개발 이야기 > Database' 카테고리의 다른 글
[MySQL] int(10) unsigned 로 저장된 날짜 date 형식으로 변환 (0) | 2020.06.30 |
---|---|
동일한 테이블에서 원하는 행 복사하기 (0) | 2020.02.04 |
[Mybatis] parameter NULL check (0) | 2020.01.28 |
[Postgresql] CRYPT 암호화 (0) | 2020.01.23 |
[Postgresql] Primary Key 중복 오류해결 - 시퀀스 시작점 변경 (0) | 2019.12.09 |