본문 바로가기
프로그래밍/hive

Hive MIN/MAX STRUCT 쿼리 사용

by W.C. 2017. 12. 25.
728x90

### Hive Min/Max Struct ###


업무중  관련 데이터를 하면서 추가 적인 정보 요청으로 쿼리 고민에 빠지게 되었다.

'나는 점수가 몇점인데 나랑 속한 데이터 중에 가장 큰 점수를 가지고 있는 놈의 이름은 무엇인가'


SUBQuery 를 사용하면 쉽게 해결 할 수 있는 문제이지만 좀더 간결한 방식을 원해서 그리고 지원 할 것이라 생각되어 검색해 보았다.

찾아 보니 **MIN/MAX STRUCT**라는 Function이 Hive 0.6.0에서 부터 지원되고 있었다.

그러나 hive 관련 문서에서는 본적이 없다..흠..


사용 방법은 이러하다 


select kind, admcode_gu,       

max(struct(rv_rate, pid)).col1 as rv_rate ,       

max(struct(rv_rate,pid)).col2 as pid 

from table_1

group by kind, admcode_gu


결과 값은

```

KIND    ADM_GU          RV_RATE               PID

-----------------------------------------------------------

학원 4143000000 50.0 2623051

학원 4145000000 0.0 1604531945

학원 4146100000 33.33333333333333 9445402

학원 4146300000 42.857142857142854 8150346

학원 4146500000 50.0 6352656

학원 4148000000 35.0 3475500

학원 4150000000 47.5 9306274

학원 4155000000 42.857142857142854 8948154

학원 4157000000 66.66666666666666 1603782972

```