2017-02-20 9 views
1

Можно взять сумму всех столбцов в таблице улей. Я имею в виду любой одиночный способ взять суммуКак взять сумму всех столбцов в улье

Таблица Col col_1 col_2 col_3

Ouptut сумму (Col), сумму (col_1), сумму (col_2) сумма (col_3)

+0

Вопрос не ясно –

+0

мне нужно взять подвести себя все столбцы в одном пути, вместо того, чтобы писать каждый раз сумму (цв), сумму (col_1) – user2672739

+0

В чем проблема с его написанием? Вам это нужно за 1000 столов? Что вы делаете с результатами? –

ответ

2
create table mytable (i int,j int,k int); 
insert into mytable values (1,2,3),(4,5,6),(7,8,9); 

select  pos+1  as col 
      ,sum (val) as sum_col 

from  mytable t 
      lateral view posexplode(array(*)) pe 

group by pos 
; 

+-----+---------+ 
| col | sum_col | 
+-----+---------+ 
| 1 |  12 | 
| 2 |  15 | 
| 3 |  18 | 
+-----+---------+ 

Или (Да поможет мне бог)

select  map_values 
      (
       str_to_map 
       (
        concat_ws 
        (
         ',' 
         ,sort_array 
         (
          collect_list 
          (
           concat_ws 
           (
            ':' 
            ,lpad(cast(pos as string),10,'0') 
            ,cast(sum_val as string) 
           ) 
          ) 
         ) 
        ) 
       ) 
      )  as sum_col_array 

from  (select  pos 
         ,sum (val) as sum_val 

      from  mytable t 
         lateral view posexplode(array(*)) pe 

      group by pos 
      ) t 
; 

+------------------+ 
| sum_col_array | 
+------------------+ 
| ["12","15","18"] | 
+------------------+