Oracle 对Scott下的emp和dept表实现如下的查询:请找出工资大于2000的职员数最多的部门,列出部门号,工资大于2000的员工数。
时间: 2023-06-23 14:08:32 浏览: 72
可以使用以下 SQL 语句来实现该查询:
```
SELECT deptno, COUNT(*) AS emp_count
FROM emp
WHERE sal > 2000
GROUP BY deptno
HAVING COUNT(*) = (
SELECT MAX(emp_count)
FROM (
SELECT deptno, COUNT(*) AS emp_count
FROM emp
WHERE sal > 2000
GROUP BY deptno
)
)
```
解释:
1. 首先从 `emp` 表中筛选出工资大于 2000 的员工,然后按照部门号进行分组,统计每个部门工资大于 2000 的员工数。
2. 对于上一步统计出的每个部门,通过 `HAVING` 子句筛选出员工数最多的部门。
3. 最后输出该部门的部门号和工资大于 2000 的员工数。
相关问题
Oracle 对Scott下的emp和dept表实现如下的查询:请找出员工工资均大于1000的部门其员工信息【要求使用exists子查询】
可以使用以下SQL语句来实现:
```
SELECT *
FROM emp
WHERE EXISTS (
SELECT *
FROM dept
WHERE emp.deptno = dept.deptno AND dept.deptno IN (
SELECT deptno
FROM emp
GROUP BY deptno
HAVING AVG(sal) > 1000
)
);
```
该查询中,首先使用子查询找到工资平均值大于1000的部门编号,然后在主查询中使用 EXISTS 子查询来判断该部门是否存在员工工资大于1000的员工,如果存在则返回该员工信息。
注意,这里的 emp 和 dept 表都是 Scott 用户下的表,如果要在其他用户下运行,需要修改表名或者授权其他用户访问。
Oracle 对Scott下的emp和dept表实现如下的查询:请找出BLAKE所管理的员工信息。
以下是查询语句:
```
SELECT *
FROM emp
WHERE mgr = (SELECT empno FROM emp WHERE ename = 'BLAKE')
```
这条查询语句使用子查询来查找BLAKE的员工编号,然后在emp表中查找mgr等于该员工编号的所有员工信息。这些员工就是由BLAKE管理的员工。