SQL row_number() - 如何忽略空值?

Eze*_*r K 3 sql null row-number snowflake-cloud-data-platform

我需要使用以下查询向用户活动添加计数器:

select PERSON_ID, TIMESTAMP, 
  row_number() over (partition by  PERSON_ID order by  TIMESTAMP asc) as PERSON_COUNTER
from table1;
Run Code Online (Sandbox Code Playgroud)

这很有效,但它也会计算 PERSON_ID 为 null 的情况,并分配计数器,就好像 null 是用户名一样。我想要的是在这些情况下计数器为空 - 有什么想法吗?

Mic*_*los 5

它将更加优雅并且没有子查询:

select PERSON_ID, TIMESTAMP, 
  iff(PERSON_ID is null, null, row_number() over (partition by  PERSON_ID order by  TIMESTAMP asc)) as PERSON_COUNTER
from table1;
Run Code Online (Sandbox Code Playgroud)