Если вам нужны все комбинации, вам потребуется выполнить полное объединение, в зависимости от конфигурации вашего куста, вам может потребоваться установить следующее свойство
set hive.mapred.mode=nonstrict
Этот запрос будет работать для вашего случая.DEMO:
create table tmp3
(
id_1 string, score int, id_2 string, score_2 int
);
INSERT INTO TABLE tmp3
VALUES (77, 10, 88, 50),(77 , 10 , 88 , 30),(77 , 25 , 88 , 50),(77 , 25 , 88 , 30);
select a.id_1, a.score, b.id_2,b.score_2 from
(
select id_1, max(score) as score from tmp3 group by id_1
) a
full join
(
select id_2, max(score_2) as score_2 from tmp3 group by id_2
) b;
result
a.id_1,a.score,b.id_2,b.score_2
77,25,88,50
Кстати, в зависимости от размера ваших данных и распределения ваших идентификаторов, полное объединение может занять несколько раз ..
ОБНОВЛЕНИЕ: Обновление ответа для использования оконной функции, позволяющей выбрать несколько столбцов для максимального количества баллов
select a.id_1, a.score, b.id_2,b.score_2 from
(
select id_1, score from (
select id_1, score ,
ROW_NUMBER() OVER (partition by id_1 order by score desc) AS row_num
from tmp3
) x1 where row_num = 1
) a
full join
(
select id_2, score_2 from (
select id_2, score_2 ,
ROW_NUMBER() OVER (partition by id_2 order by score_2 desc) AS row_num
from tmp3
) x2 where row_num = 1
) b;