第一个动作的行号

t0ybt7op  于 2021-06-26  发布在  Impala
关注(0)|答案(2)|浏览(360)

我有一个包含用户ID和操作日志的表。我想得到以下结果:

+---------+------------+---------+
| 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\u number()函数,并尝试通过执行以下代码来实现这一点:

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

但我好像错过了什么。你能帮帮我吗?我使用的是impalasql语法。
先谢谢你。

q7solyqu

q7solyqu1#

你很接近。使用

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

mrfwxfqh2#

首次使用 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 在分割子句中

相关问题