SQL在注册后映射用户

SQL在注册后映射用户,sql,Sql,我有一个表a。当用户进入我们的网站时,id将为空。注册后,将生成id。如何从客户到达时开始跟踪他们 id time city ipaddresss page visited 10.15 New York 192.45.323.12 page1 10.4 New York 192.45.323.12 page2 1 11.15 New York 192.45.323.12 page3 1

我有一个表a。当用户进入我们的网站时,id将为空。注册后,将生成id。如何从客户到达时开始跟踪他们

id   time       city     ipaddresss      page visited
     10.15   New York    192.45.323.12    page1
     10.4    New York    192.45.323.12    page2
1    11.15   New York    192.45.323.12    page3
1    11.45   New york    192.45.323.12    page3

因此,这是单个客户的数据。当ipaddress相同时,在进行分析时,还需要使用空的用户id。如何映射它们

您的数据表明,每个ip地址有一个用户。这似乎不现实,但假设您可以使用窗口函数:

select t.*,
       coalesce(id,
                max(id) over (partition by ipaddress)
               ) as imputed_id
from t;
严格来说,
coalesce()
不是必需的,但它强调了使用窗口函数的原因


当我遇到这个问题时,情况就复杂多了,因为需要考虑会话,而且有些IP地址有多个用户。如果这更接近您真正想要解决的问题,那么请使用更合适的数据和更好的说明询问另一个问题。

为什么不在为新用户创建第一条记录之前生成ID?或者使用IP地址作为标识符?这是来自分析平台的事件数据。在用户注册之前,他们的id为null。我需要将此表连接到多个表。所以用户id就是标识符。你在使用哪种DBMS产品?嗨,确实不像我贴的那么简单。我正在创建一个会话表。是的,有些ip地址有多个用户,反之亦然。我真的很困惑如何处理这件事。你能给我解释一下吗。这对我真的很有帮助。@George。请用更合适的样本数据和期望的结果提出另一个问题。我相信这回答了你在这里提出的问题。