복붙노트

[HADOOP] 몇 열에 대한 열을 번들 하이브 / SQL은 열 나머지는 풀을 기반으로하는 다른 열 최저 / 최고

HADOOP

몇 열에 대한 열을 번들 하이브 / SQL은 열 나머지는 풀을 기반으로하는 다른 열 최저 / 최고

저는 아래 5 열 하이브 테이블이

name orderno productcategory amount description
KJFSFKS 1   1   40  D1
KJFSFKS 2   2   50  D2
KJFSFKS 3   2   67  D3
KJFSFKS 4   2   10  D4
KJFSFKS 5   3   2   D5
KJFSFKS 6   3   5   D6
KJFSFKS 7   3   6   D7
KJFSFKS 8   4   8   D8
KJFSFKS 9   5   8   D9
KJFSFKS 10  5   10  D10

productcategory 코드 양 필드를 추가 여러 행 같으면 동일한 제품 분류 코드에 기초하여 원하는 출력이 항상 picklowest 출력 아래 최고 orderno에 기초하여 설명을 골라 orderno

name    orderno productcategory amount  description
KJFSFKS 1   1   40  D1
KJFSFKS 2   2   127 D4
KJFSFKS 5   3   13  D7
KJFSFKS 8   4   8   D8
KJFSFKS 9   5   18  D10

위에서 말했듯이, 일부 필드는, 어떤 순서로 다른 순서로 다른있다

난으로 그룹을 사용하지만, 합계 (양),이 orderno 열을 기반으로 설명 필드에 대한 것, 또한 내가 주문 번호에 따라 선택해야 내 요구 사항의 다른 열이 미세하다

해결법

  1. ==============================

    1.

    select name, orderno,  productcategory,  amount,   description 
    from 
    (
    select name, orderno, productcategory, 
           sum(amount) over(partition by name, productcategory) amount, 
           first_value(description) over(partition by name, productcategory order by orderno desc) description,
           row_number() over (partition by name, productcategory order by orderno) rn
    from  your_table
    )s where rn=1; --pick lowest orderno 
    
    OK
    KJFSFKS 1       1       40      D1
    KJFSFKS 2       2       127     D4
    KJFSFKS 5       3       13      D7
    KJFSFKS 8       4       8       D8
    KJFSFKS 9       5       18      D10
    Time taken: 12.492 seconds, Fetched: 5 row(s)
    
  2. ==============================

    2.

    select      name
               ,min(orderno)    as orderno
               ,productcategory
               ,sum(amount)     as amount
               ,max(named_struct('orderno',orderno,'description',description)).description
    
    from        mytable
    
    group by    name
               ,productcategory
    ;
    
  3. from https://stackoverflow.com/questions/45328004/hive-sql-bundling-columns-for-few-columns-rest-of-the-columns-are-pull-based-low by cc-by-sa and MIT license