SQL(Redshift)获取多个表的交集
SQL (Redshift) to get the intersect of multiple tables
我正在使用 Redshift,并且有 6 个 ID 表。我想获得每个表之间的交集。
所以我的最终输出看起来像这样:
- Table 1 & Table 2 有 10% 的共同 ID
- Table 1 & Table 3 有 50% 的共同 ID
- .....
- .....
- Table 6 & Table 4 有 20% 的共同 ID
- Table 6 & Table 5 有 3% 的共同 ID
我可以很容易地获取数据,但是重复相同的数据会很麻烦 SQL,所以我尝试创建一些包含所有 ID 的表和它们所在的表,但我关于在一两个 SQL 中获取数据的内容。
欢迎任何想法!
您可以尝试在子查询中按 ID 完全连接所有这些表,然后使用条件聚合,这样 Table 1 & Table 2 have 10% common IDs
将表示为
100.0*sum(case when id1 is not null and id2 is not null then 1 end)/count(id1)
(以Table 1行数为分母)
我正在使用 Redshift,并且有 6 个 ID 表。我想获得每个表之间的交集。
所以我的最终输出看起来像这样:
- Table 1 & Table 2 有 10% 的共同 ID
- Table 1 & Table 3 有 50% 的共同 ID
- .....
- .....
- Table 6 & Table 4 有 20% 的共同 ID
- Table 6 & Table 5 有 3% 的共同 ID
我可以很容易地获取数据,但是重复相同的数据会很麻烦 SQL,所以我尝试创建一些包含所有 ID 的表和它们所在的表,但我关于在一两个 SQL 中获取数据的内容。
欢迎任何想法!
您可以尝试在子查询中按 ID 完全连接所有这些表,然后使用条件聚合,这样 Table 1 & Table 2 have 10% common IDs
将表示为
100.0*sum(case when id1 is not null and id2 is not null then 1 end)/count(id1)
(以Table 1行数为分母)