[英]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'中的信息
我尝试修改它,以继续得到错误。
谢谢!
需要包括nameFirst
和nameLast
将在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
表获取FirstName , LastName并使用salaries
表进行JOIN
以获取每个玩家的总薪水。
因此,当您使用GROUP BY
子句时,当前查询异常应确保SELECT
语句中的列/表达式需要聚合。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.