针对来自多个ID的单个标识的SQL解决方案
我正在寻找一种方法,通过SQL,从共享公共(但不同)键的行建立一个针对来自多个ID的单个标识的SQL解决方案,sql,amazon-athena,Sql,Amazon Athena,我正在寻找一种方法,通过SQL,从共享公共(但不同)键的行建立一个visitor\u id,然后生成一个输出表,将已建立的visitor\u id分配回所有行。 我的数据库是AWS雅典娜 例如: with things as ( select 'aaa' as thing_id, '111' as visitor_id, 'alpha@gmail.com' as email_address, '(111) 111-1111' as phone_number union all s
visitor\u id
,然后生成一个输出表,将已建立的visitor\u id
分配回所有行。
我的数据库是AWS雅典娜
例如:
with things as (
select 'aaa' as thing_id, '111' as visitor_id, 'alpha@gmail.com' as email_address, '(111) 111-1111' as phone_number
union all select 'bbb' as thing_id, '111' as visitor_id, 'beta@gmail.com' as email_address, null as phone_number
union all select 'ccc' as thing_id, '111' as visitor_id, null as email_address, '(222) 222-2222' as phone_number
union all select 'ddd' as thing_id, '222' as visitor_id, 'alpha@gmail.com' as email_address, '(333) 333-3333' as phone_number
union all select 'eee' as thing_id, '333' as visitor_id, 'alpha@gmail.com' as email_address, null as phone_number
union all select 'fff' as thing_id, '444' as visitor_id, 'charlie@gmail.com' as email_address, '(333) 333-3333' as phone_number
union all select 'ggg' as thing_id, '555' as visitor_id, 'charlie@gmail.com' as email_address, '(444) 444-4444' as phone_number
union all select 'hhh' as thing_id, '666' as visitor_id, null as email_address, '(444) 444-4444' as phone_number
)
我知道所有这些东西都属于同一个访客id
、aaa
和bbb
都共享相同的ccc
visitor\u id
和ddd
与eee
、aaa
和bbb
共享相同的ccc
电子邮件地址
与fff
共享相同的ddd
(因此与电话号码
共享相同的aaa
)visitor\u id
与ggg
共享相同的fff
email\u地址(因此与
共享相同的fff
,后者与visitor\u id
共享相同的aaa
)visitor\u id
与hhh
共享相同的ggg
(因此与电话号码
相同的ggg
,与visitor\u id
相同)aaa
|---------------------|------------------|
| thing_id | vistior_id |
|---------------------|------------------|
| aaa | 111 |
|---------------------|------------------|
| bbb | 111 |
|---------------------|------------------|
| ccc | 111 |
|---------------------|------------------|
| ddd | 111 |
|---------------------|------------------|
| eee | 111 |
|---------------------|------------------|
| fff | 111 |
|---------------------|------------------|
| ggg | 111 |
|---------------------|------------------|
| hhh | 111 |
|---------------------|------------------|
我尝试过交叉连接,然后消除重复项。然而,我正在努力解决
fff
、ggg
和hhh
,因为它们只通过另一个thing\u id
s与aaa
相关,这需要递归CTE或分层查询。您使用的是什么数据库?您使用的是哪个数据库?另一种方法是使用图形数据库。任何连接的东西都是同一ID的一部分。我使用的是AWS雅典娜