繁体   English   中英

HIVE在多个表中分组

[英]HIVE Group By in Multiple Tables

两张表-'salaries'和'master1'

薪水是按年计算的,我可以将其分组以使用

SELECT playerID, sum(salary) as sal 
FROM salaries 
GROUP BY playerID ORDER BY sal DESC LIMIT 10; 

这将返回玩家ID和薪水总和,但我需要“ master1”表“ nameFirst”和“ nameLast”列下的玩家名称。 它们在“ master1”和“ salaries”中都有“ playerID”的公共列,但是当我尝试运行时

SELECT master1.nameFirst, master1.nameLast, sum(salary) as sal 
FROM salaries, master1 
GROUP BY salaries.playerID ORDER BY sal DESC LIMIT 10; 

我收到错误表达式不在GROUP BY键'nameFirst'中的信息

我尝试修改它,以继续得到错误。

谢谢!

需要包括nameFirstnameLast将在group by

SELECT 
master1.nameFirst, 
master1.nameLast, 
sum(salary) as sal 
FROM salaries JOIN master1 ON salaries.playID = master1.playerID
GROUP BY master1.nameFirst, master1.nameLast, salaries.playerID 
ORDER BY sal DESC LIMIT 10;

首先,您需要使用正确的显式JOIN语法

SELECT  
        MAX(m.nameFirst) FirstName,
        MAX(m.nameLast) LastName,
        SUM(s.salary) Salary
FROM master1 m
INNER JOIN salaries s ON m.playerID = s.playerID 
GROUP BY m.playerID 

使用master1表获取FirstNameLastName并使用salaries表进行JOIN以获取每个玩家的总薪水。

因此,当您使用GROUP BY子句时,当前查询异常应确保SELECT语句中的列/表达式需要聚合。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM