Номер строки для первого действия - PullRequest
0 голосов
/ 04 мая 2018

У меня есть таблица с идентификаторами пользователей и журналами действий. И я хотел бы получить следующий результат:

+---------+------------+---------+
| user_id | action_id | row_num |
+---------+------------+---------+
| id1     | action 1   |       1 |
| id1     | action 1   |       2 |
| id1     | action 2   |       1 |
| id1     | action 3   |       1 |
| id2     | action 1   |       1 |
| id2     | action 2   |       1 |
| id2     | action 3   |       1 |
| id2     | action 3   |       2 |
| id2     | action 3   |       3 |
+---------+------------+---------+

Я почти уверен, что мне нужно использовать функцию ROW_NUMBER (), и я пытаюсь добиться этого, выполнив следующий код:

select user_id,
action_id,
row_number() over (partition by action_id order by user_id desc) as rn
from table

Но, похоже, я что-то упустил. Не могли бы вы помочь мне? Я использую синтаксис Impala SQL.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Первое использование action_id вместо этого в order by предложении:

select user_id, action_id,
       row_number() over (partition by user_id, action_id order by action_id) as rn
from table t;

Во-вторых, вы не указали action_id в разделе предложение

0 голосов
/ 04 мая 2018

Вы были близки. Используйте

row_number() over (partition by user_id,action_id order by action_id) as rn
...