从 Apache HIVE 或 SQL 中的两个表中获取计数
Getting the count from two tables in Apache HIVE or SQL
所以我有两个表:
table_1 和 table_2
它们都有不同的同名列。
我们只需要处理 2 列:
ID 和地区
table_1 的 ID 字段仅与 table_1 不同。
table_2 的 ID 字段仅与 table_2 不同。
但是,某些 ID 字段由 table_1 和 table_2
共享
我需要编写一个查询,从中获取两个表中不同 ID 字段的数量,其中 REGION = '1'
使用 SQL,利用 UNION 消除两个表之间的重复值,这样您就可以得到一个不同的 ID 值列表来计算。
SELECT COUNT(*)
FROM (SELECT ID
FROM table_1
WHERE REGION = '1'
UNION
SELECT ID
FROM table_2
WHERE REGION = '1') t
完全外部连接应该可以解决问题。
SELECT COUNT(*)
FROM table_1
FULL OUTER JOIN table_2 ON (table_1.id=table_2.id)
它将为 table_1 或 table_2 中的每个 ID 创建一行。如果 id 在两个表中,它仍然会创建一个单独的行。
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Joins
所以我有两个表: table_1 和 table_2
它们都有不同的同名列。
我们只需要处理 2 列: ID 和地区
table_1 的 ID 字段仅与 table_1 不同。 table_2 的 ID 字段仅与 table_2 不同。
但是,某些 ID 字段由 table_1 和 table_2
共享我需要编写一个查询,从中获取两个表中不同 ID 字段的数量,其中 REGION = '1'
使用 SQL,利用 UNION 消除两个表之间的重复值,这样您就可以得到一个不同的 ID 值列表来计算。
SELECT COUNT(*)
FROM (SELECT ID
FROM table_1
WHERE REGION = '1'
UNION
SELECT ID
FROM table_2
WHERE REGION = '1') t
完全外部连接应该可以解决问题。
SELECT COUNT(*)
FROM table_1
FULL OUTER JOIN table_2 ON (table_1.id=table_2.id)
它将为 table_1 或 table_2 中的每个 ID 创建一行。如果 id 在两个表中,它仍然会创建一个单独的行。
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Joins