oracle 显示列中最常见的值

dwthyt8l  于 2023-03-22  发布在  Oracle
关注(0)|答案(1)|浏览(151)

我试着回答:
找出job_history表中出现频率最高的两个职务ID。使用查询输出这两个职务ID。然后使用该查询的结果在Employees表中查找,以输出job_id以及在job_history表中出现频率最高的这两个职务ID的平均工资。
我的解决方案(不显示最常见的):

SELECT employees.job_id, AVG(employees.salary)
FROM HR.employees,
     HR.job_history
WHERE employees.job_id = job_history.job_id
GROUP BY employees.job_id 
HAVING COUNT (job_history.job_id) >= all(
    SELECT COUNT(job_id)
    FROM hr.job_history
    GROUP BY job_id);

我错过了什么?

1u4esq0p

1u4esq0p1#

找出job_history表中最常见的两个作业id。使用查询输出这两个作业id。
你不需要使用employees表来回答这部分问题。你只需要使用job_history表并找到具有最高2个频率的行:

SELECT job_id
FROM   HR.job_history
GROUP BY job_id
ORDER BY COUNT(*) DESC
FETCH FIRST 2 ROWS ONLY;
  • 注意:FETCH语法可从Oracle 12获得。*

然后使用该查询的结果在Employees表中查找,以输出job_id,以及在job_history表中最常找到的两个job_id的平均工资。
然后,您需要使用上一个查询的结果过滤Employees表,并查找这些job_id的平均工资。
既然这看起来像一个家庭作业问题,那么我就把这部分留给你。

相关问题