当文件中的人具有相同的地址但分配给不同的人时,我正在创建一个家庭ID。对于每个具有相同地址的人,我需要它具有相同的ID,而不是顺序的ID,并且我正在使用一个名为Alpine的程序,因此我需要使用Sql或pig语法版本。
答案 0 :(得分:0)
具有相同地址的每个人的ID相同
最简单的解决方案是根本不创建ID,而只是使用地址作为您的ID。显然,它已经是独一无二的。
如果您要为每个地址生成一个数字,则在SQL中最简单的 standard 方法是将表与其自身(实际上只是地址)联接起来并计算数量许多都在“之前”。大约:
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都具有某种用于生成行号的自动递增功能。