如何获得薪水比HIVE中的平均薪水高的人的名字

时间:2015-05-28 07:44:41

标签: hadoop hiveql

Dept_id  Emp_name  Sal
1        amit      2500 
2        neha      3600
3        ankit     4500

需要找到工资大于整个部门平均工资的员工姓名。使用蜂巢。

5 个答案:

答案 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