Dept_id Emp_name Sal
1 amit 2500
2 neha 3600
3 ankit 4500
需要找到工资大于整个部门平均工资的员工姓名。使用蜂巢。
答案 0 :(得分:2)
Hive在使用子查询时有限制....我们可以使用以下查询解决您的问题...根据您的表更改列名...
SELECT * 来自员工的JOIN(由deptid从员工s2组中选择s2.deptid deptid,avg(s2.salary)sal)s3 ON s.deptid = s3.deptid WHERE s.sal> s3.sal;
答案 1 :(得分:1)
试试这个:
$sql = "select e.Emp_name from Employee e where e.sal> (select avg(sal) from Employee where dept_id = e.dept_id group by dept_id)";
答案 2 :(得分:1)
你的蜂巢版本是什么?
在hive 13.0版本中,它是可能的。请参阅以下链接 http://jsfiddle.net/bedex78/hkk7rx74/7/
答案 3 :(得分:1)
在Hive查询下面尝试
SELECT e.Emp_name FROM Employee e WHERE e.Sal > (SELECT AVG(Sal) from Employee WHERE Dept_id = e.Dept_id GROUP BY Dept_id);
答案 4 :(得分:1)
基本上你正在寻找的是像gopi建议的子查询。 试试这个。
SELECT *
FROM Employee e
WHERE e.Sal >
(
SELECT AVG(Sal)
from Employee
GROUP BY Dept_id
Having Dept_id = e.Dept_id
);
输入
1 amit 2500
1 neha 3600
1 ankit 4500
输出
1 neha 3600
1 ankit 4500