[SQL] 다른 열 그룹화 다른 칼럼의 최대 값에 기초 얻기 [중복]
SQL다른 열 그룹화 다른 칼럼의 최대 값에 기초 얻기 [중복]
나는 다른 열을 기준으로 그룹화 다른 컬럼의 최대에 따라 컬럼의 값을 얻을 싶어요.
나는이 테이블이 :
KEY NUM VAL
A 1 AB
B 1 CD
B 2 EF
C 2 GH
C 3 HI
D 1 JK
D 3 LM
그리고이 결과를 원하는 :
KEY VAL
A AB
B EF
C HI
D LM
나는 실제로 그것을 얻기 위해이 쿼리를 사용할 수 있습니다.
select KEY, VAL
from TABLE_NAME TN
where NUM = (
select max(NUM)
from TABLE_NAME TMP
where TMP.KEY = TN.KEY
)
그러나 결과를 얻기 위해 오라클 SQL에서 더 우아한 방법 (10g 이상)은 무엇입니까?
그 뒤에 이유는 실제로 여러 개의 키이며, 그것이 조금 추한 모습이다.
해결법
-
==============================
1.당신은 ()이 사용 ROW_NUMBER에 접근 할 수 있습니다 :
당신은 ()이 사용 ROW_NUMBER에 접근 할 수 있습니다 :
select key, val from (select t.*, row_number() over (partition by key order by num desc) as seqnum from table_name t ) t where seqnum = 1;
당신이 더 "우아한"는 아마 취향의 문제입니다 고려 여부.
나는이 쿼리에서 미묘하게 다르다는 점을 지적한다. 이것은 각각의 키에 대해 하나 개의 행을 반환 보장; 당신은 여러 행을 반환 할 수 있습니다. 당신이 그 동작을 원하는 경우에, 다만 순위 () 또는 DENSE_RANK () 대신 ROW_NUMBER ()를 사용합니다.
from https://stackoverflow.com/questions/32585397/get-value-based-on-max-of-a-different-column-grouped-by-another-column by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL 쿼리에서 역 중복 제거 (0) | 2020.07.01 |
---|---|
[SQL] SQL 서버 : 어떻게 저장 프로 시저의 매개 변수로 데이터베이스 이름을 얻을 수 있습니다 (0) | 2020.07.01 |
[SQL] 어떻게 SQL Server의 공휴일을 결정합니까? (0) | 2020.07.01 |
[SQL] 이노 디비에서 MySQL을 LIKE '% 문자열 %'쿼리를 최적화 (0) | 2020.07.01 |
[SQL] 외래 키는 기본 키의 역할을 할 수 있습니까? (0) | 2020.07.01 |