Как использовать 2 для петель в улье - PullRequest
0 голосов
/ 17 октября 2018

Как использовать 2 для циклов в Hive?

У меня есть входные данные, как показано ниже:

1  a 3

15 b 4

1  b 2

25 a 5

15 c 3

1  a 3

15 c 2

25 b 4

Промежуточный вывод: для 1 общего количества нет.a и b, аналогичные для 15 и 25

1 a 6

1 b 2

15 b 4

15 c 5

25 a 5

25 b 4

Конечный результат: требуется 1 максимальное число

1 a 6

15 c 5

25 a 5

1 Ответ

0 голосов
/ 17 октября 2018

Вы можете использовать оконные функции и получить результаты. Проверьте это:

> select * from shailesh;
INFO  : OK
+----------------+----------------+----------------+--+
| shailesh.col1  | shailesh.col2  | shailesh.col3  |
+----------------+----------------+----------------+--+
| 1              | a              | 3              |
| 15             | b              | 4              |
| 1              | b              | 2              |
| 25             | a              | 5              |
| 15             | c              | 3              |
| 1              | a              | 3              |
| 15             | c              | 2              |
| 25             | b              | 4              |
+----------------+----------------+----------------+--+
8 rows selected (0.359 seconds)

> create table shailesh2 as select col1, col2, max(col3s) col3s2 from (select col1,col2,sum(col3) over(partition by col1,col2) col3s from shailesh ) t group by col1, col2;
INFO  : OK
+-----------------+-----------------+-------------------+--+
| shailesh2.col1  | shailesh2.col2  | shailesh2.col3s2  |
+-----------------+-----------------+-------------------+--+
| 1               | a               | 6                 |
| 1               | b               | 2                 |
| 15              | b               | 4                 |
| 15              | c               | 5                 |
| 25              | a               | 5                 |
| 25              | b               | 4                 |
+-----------------+-----------------+-------------------+--+
6 rows selected (0.36 seconds)

> select col1, col2, col3s2 from (select col1,col2,col3s2, rank() over(partition by col1 order by col3s2 desc) as rk from shailesh2) t2 where rk=1;
INFO  : OK
+-------+-------+---------+--+
| col1  | col2  | col3s2  |
+-------+-------+---------+--+
| 1     | a     | 6       |
| 15    | c     | 5       |
| 25    | a     | 5       |
+-------+-------+---------+--+
3 rows selected (37.224 seconds)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...