Запрос Hive, чтобы получить верхние 3 значения столбца, используя сумму другого значения столбца - PullRequest
1 голос
/ 03 мая 2019

У меня есть 3 столбца, это Key_id, GST, Claim_amnt. У одного key_id будет несколько значений gst, а у одного значения gst - несколько заявок. например, у меня есть таблица, как показано ниже.

 Key_id   gst     claim_amnt
  1245     5         235
  1245     5         100
  1245     4         254   
  1245     4         542
  1245     4         471
  1245     2         745
  1246     1         24
  1246     1         45
  1246     5         52
  1246     5         42
  1246     4         45

сумма востребованности_амнт для соответствующего gst согласно key_id

как

key_id  gst   (addition of claim_amnt with respect to its gst)
1245    5     335
1245    4     1267
1245    2     745
1246    1     69
1246    5     94
1246    4     45

Мне нужны 3 верхних gst поля, которые относятся к Applic_amnt вместе с соответствующим key_id.

Требуемый вывод:

key_id  gst_top1   gst_top2   gst_top3
1245      4          2           5
1246      5          1           4

Я могу получить значения top3 gst в значениях одного столбца, но не могу сделать это, разделив top3 на 3 разных поля.

1 Ответ

1 голос
/ 03 мая 2019

Вы можете сделать это с парой уровней агрегации:

select key_id,
       max(case when seqnum = 1 then gst end) as gst_1,
       max(case when seqnum = 2 then gst end) as gst_2,
       max(case when seqnum = 3 then gst end) as gst_3
from (select key_id, gst, sum(claim_amt) as claim_amt,
             row_number() over (partition by key_id order by sum(claim_amt) desc) as seqnum
      from t
      group by key_id, gst
     )
group by key_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...