Для Hive 0.11+ вы можете использовать оконную функцию, например rank
:
select name, device, operating, browser
from (
select *, rank() over (partition by name order by cnt desc) as rnk
from (
select name, device, operating, browser, count(*) as cnt
from yourtable
group by name, device, operating, browser
) t
) t
where rnk = 1
Шаг за шагом:
- количество вхождений одинаковых значений строк
- ранжируйте их по количеству с наибольшим для каждого имени сверху
- фильтровать только те, которые имеют наибольшее количество
Примечание: если в определенном имени есть связь, он возвращает все строки с одинаковым номером для них.