我不确定标题是否能很好地解释我的问题,我将在这里正确地详述它。
我有一个名为121\u 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;
这个查询给我的结果,但它平均整个薪资列,而不是找到每个职位的平均值。
感谢您的帮助,并提前向您表示感谢!
2条答案
按热度按时间yx2lnoni1#
按jobtitle分组以获取每个jobtitle的平均薪资,然后加入jobtitle并筛选以获取大于该jobtitle平均薪资1.5倍的empname。
5uzkadbs2#
你应该使用
partition by
在avg
计算每个职位的平均值。空的over()
子句计算avg
对于列中的所有值。