我不确定标题是否很好地解释了我的问题,我会在这里正确地详细说明。
我有一个名为 121_salaries 的表,其中包含 empname、address、jobtitle、department 和 salary 列。
我想找出每个职位的平均工资,然后显示工资明显高于其他职位的员工的信息。
我目前的查询是:
SELECT * FROM (SELECT jobtitle, salary, AVG(salary) OVER() AS avgSal FROM 121_salaries) t WHERE salary > 1.5*avgSal;
此查询为我提供了结果,但它计算了整个工资列的平均值,而不是查找每个职位的平均值。
感谢任何帮助,并在此先感谢您!
最佳答案
您应该在 avg
计算中使用 partition by
以便计算每个职位的平均值。空的 over()
子句计算列中所有值的 avg
。
SELECT *
FROM (SELECT jobtitle, salary, AVG(salary) OVER(PARTITION BY jobtitle) AS avgSal
FROM 121_salaries
) t
WHERE salary > 1.5*avgSal
关于hadoop - 如何在 Hive 中找到一组的 AVG 并与之进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53485209/