我正在努力创建一个家庭ID,当我的文件中的人具有相同的地址但分配给不同的人。我需要它是每个具有相同地址而不是顺序ID的人的相同ID,并且我使用的是名为Alpine的程序,因此我需要使用Sql或pig语法版本。
具有相同地址的每个人的相同ID
最简单的解决方案是根本不创建ID,而只是使用地址作为您的ID。显然,它已经是独一无二的了。
如果您想要做的是为每个地址生成一个数字,那么在SQL中执行该操作的最简单方法是将表连接到自身(实际上只是地址)并计算“之前”的数量。大约:
select name, A.addr, count(*) as ID
from T as A
join (select distinct addr from T) as B
on B.addr <= A.addr
group by name, A.addr
这将为最低地址生成一个ID,为下一个地址生成2,依此类推。
几乎每个DBMS都有一些自动增量功能,用于生成行号。