Запрос на получение результата, например Country vs Country, с использованием SQL / Hive - PullRequest
0 голосов
/ 07 мая 2020

Народ,

Недавно я столкнулся с вопросом, на который я не могу получить фактический ответ. Пожалуйста, дайте мне предложение, чтобы получить ожидаемый результат.

InputDataset

Table Name : Country_List

Country
Ind
Aus
China
Us
Eng
NL
Pak
SRL

Мне нужно получить возможную комбинацию вышеупомянутого набора данных, например, country1 vs country2

Ожидаемый результат

Ind Vs Pak
Ind Vs Aus
China VS ind
China Vs US
SRL VS Ind

аналогично мне нужно получить все возможные комбинации без дубликатов.

Примечание: Ind VS Pak и Pak Vs Ind одинаковы. Нам нужно только один.

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

Думаю, вам просто нужен cross join или join с неравенством:

select cl1.country, cl2.country
from Country_List cl1 cross join
     Country_List cl2
where cl1.country < cl2.country;
0 голосов
/ 07 мая 2020

Вы можете попробовать это ниже logi c

WITH CTE
AS(
    SELECT *,
    ROW_NUMBER() OVER(ORDER BY Country) RN
    FROM Country_List
)


SELECT DISTINCT A.Country, B.Country 
FROM CTE A
INNER JOIN CTE B ON A.RN < B.RN
...