根据提供的标题、描述以及部分代码内容,我们可以整理出Oracle数据库查询相关的知识点,这些知识点主要集中在多表查询、条件筛选及聚合函数的使用上。
### 1. 多表查询与聚合函数
#### 1.1 统计部门员工数量超过1人的部门
```sql
SELECT deptno, COUNT(empno) FROM emp GROUP BY deptno HAVING COUNT(empno) > 1;
```
此查询用于找出员工数量超过1人的所有部门。`GROUP BY`子句按照`deptno`进行分组,而`HAVING COUNT(empno) > 1`则确保只返回那些满足特定条件(即员工数量大于1)的分组结果。
#### 1.2 多表连接查询部门员工数量超过1人的部门详情
```sql
SELECT d.*, ed.cou
FROM dept d, (SELECT deptno, COUNT(empno) cou FROM emp GROUP BY deptno HAVING COUNT(empno) > 1) ed
WHERE d.deptno = ed.deptno;
```
这里使用了嵌套查询的方式,先通过子查询统计员工数量超过1人的部门,并计算每个符合条件的部门的员工数量(命名为`cou`),然后将这个结果集与`dept`表进行连接,得到具体的部门信息。
### 2. 条件筛选查询
#### 2.1 查询工资高于'SMITH'员工的其他员工
```sql
SELECT * FROM emp WHERE sal > (SELECT sal FROM emp WHERE ename = 'SMITH');
```
该查询用于找出工资高于名为'SMITH'的员工的所有员工。这里使用了子查询来获取'SMITH'员工的工资,并作为外部查询中的比较基准。
### 3. 多条件组合查询
#### 3.1 查询每个员工及其直属领导的信息
```sql
SELECT e.ename, m.ename
FROM emp e, emp m
WHERE e.mgr = m.empno (+);
```
这个查询展示了如何使用表别名简化查询语句,并通过外连接(`empno (+)`)确保即使没有对应的领导记录也能返回员工的信息。
### 4. 多表复杂条件查询
#### 4.1 查询入职日期早于其直属领导的员工及其部门信息
```sql
SELECT e.empno, e.ename, d.dname
FROM emp e, emp m, dept d
WHERE e.mgr = m.empno AND e.hiredate < m.hiredate AND e.deptno = d.deptno;
```
这个复杂的查询结合了多个条件:通过`mgr`字段找到员工的直属领导,同时利用`hiredate`确保员工的入职日期早于领导;并通过`deptno`字段连接`dept`表以获取部门名称。
### 5. 左外连接查询
#### 5.1 左外连接查询员工及其所在部门信息
```sql
SELECT d.dname, e.*
FROM emp e, dept d
WHERE e.deptno (+) = d.deptno;
```
这里的左外连接(通过`deptno (+)`表示)可以返回所有员工的信息,即使某些员工没有对应部门信息的情况下也能够显示这些员工的基本信息。
### 6. 指定职位员工查询
#### 6.1 查询所有职位为“CLERK”的员工及其所在部门信息
```sql
SELECT e.ename, d.dname
FROM emp e, dept d
WHERE e.deptno = d.deptno AND e.job = 'CLERK';
```
该查询通过`job`字段筛选出职位为“CLERK”的员工,并结合`deptno`字段连接`dept`表以获取部门名称。
### 7. 聚合函数与条件筛选
#### 7.1 查询最低工资超过1500元的职位及其员工数量
```sql
SELECT job, COUNT(empno)
FROM emp
WHERE job IN (SELECT job FROM emp GROUP BY job HAVING MIN(sal) > 1500)
GROUP BY job;
```
这里使用了嵌套查询和聚合函数`MIN`来筛选出最低工资超过1500元的职位,并进一步计算这些职位的员工数量。
### 8. 部门信息筛选查询
#### 8.1 查询属于“SALES”部门的员工
```sql
SELECT ename
FROM emp
WHERE deptno = (SELECT deptno FROM dept WHERE dname = UPPER('sales'));
```
该查询通过子查询先找到部门名称为“SALES”的部门编号,然后在`emp`表中筛选出该部门的员工。
### 9. 平均工资与条件筛选
#### 9.1 计算公司员工平均工资
```sql
SELECT AVG(sal) FROM emp;
```
简单的聚合函数应用,用于计算公司所有员工的平均工资。
#### 9.2 查询工资高于公司平均工资的员工及其所在部门信息
```sql
SELECT e.*, d.dname, d.loc
FROM emp e, dept d
WHERE sal > (SELECT AVG(sal) FROM emp) AND e.deptno = d.deptno;
```
这个查询首先通过子查询获取公司的平均工资,然后筛选出工资高于平均值的员工,并通过部门编号连接`dept`表以获取部门信息。
以上内容总结了给定文件中的关键查询语句和应用场景,涉及到了多表查询、条件筛选、聚合函数等多种Oracle数据库操作技巧。
你可以使用以下命令查看当前用户所属的数据库:
```
SELECT sys_context('USERENV', 'DB_NAME') FROM dual;
```
这会返回当前用户所在的数据库名称。