hive 如何从三个表中获取公共最大元素

0pizxfdo  于 2022-11-05  发布在  Hive
关注(0)|答案(2)|浏览(176)

我有三个表,分别称为表a、表b和表c,这三个表都有一个公共列。
如何从三个表中得到共同的最大值?
以下是我的表信息:
表A

id  salary
101  10000
102  15000
103  18000

表b

id salary
110  14000
127  21000
118  15000

表C

id  salary
191  15000
192  20000
193   8000

我需要的输出是:

salary

15000
dphi5xsq

dphi5xsq1#

使用UNION ALL(或UNION)获取所有3个表的薪金,并使用额外的列(如id)标记源表,然后在聚合查询的HAVING子句中检查该薪金是否属于所有表。
最后,使用ORDER BYLIMIT 1来获得最大公共salary

SELECT salary
FROM (
  SELECT 1 id, salary FROM tableA UNION ALL
  SELECT 2 id, salary FROM tableB UNION ALL
  SELECT 3 id, salary FROM tableC 
) t
GROUP BY salary
HAVING COUNT(DISTINCT id) = 3 -- get only the common salaries
ORDER BY salary DESC LIMIT 1;
41zrol4v

41zrol4v2#

您可以在数据表之间使用内部链接,以确定您只会考虑所有三个数据表中出现的值。
然后使用MAX()来获取这些值中的最大值。

SELECT MAX(salary) AS salary
FROM tableA JOIN tableB USING (salary) JOIN tableC USING (salary)

相关问题