7.查询哪些部门没有员工(使用where and语言)
时间: 2024-03-03 18:49:14 浏览: 18
假设部门信息存储在名为`departments`的表中,员工信息存储在名为`employees`的表中,且两个表都有一个共同的字段`department_id`表示部门编号。
可以使用下面的SQL语句查询哪些部门没有员工:
```
SELECT department_name
FROM departments
WHERE department_id NOT IN (
SELECT department_id
FROM employees
)
```
其中,子查询`SELECT department_id FROM employees`用于查询所有有员工的部门编号,主查询则使用`WHERE department_id NOT IN`过滤掉拥有员工的部门,从而得到没有员工的部门名称。
相关问题
实验5-子查询、连接查询 完成以下查询,将代码截图贴在答题区。 1.使用内连接方法查找不在财务部工作的所有员工信息。 2.查询研发部在1976年以前出生的雇员姓名及薪水详情。 3.查找员工数超过2人的部门名称和员工数
抱歉,作为语言模型,我无法进行截图操作。以下是相应的 SQL 查询语句:
1.使用内连接方法查找不在财务部工作的所有员工信息。
```
SELECT *
FROM employees
INNER JOIN department
ON employees.dept_no = department.dept_no
WHERE department.dept_name <> 'Finance';
```
2.查询研发部在1976年以前出生的雇员姓名及薪水详情。
```
SELECT employees.first_name, employees.last_name, salaries.salary
FROM employees
INNER JOIN salaries
ON employees.emp_no = salaries.emp_no
INNER JOIN dept_emp
ON employees.emp_no = dept_emp.emp_no
INNER JOIN departments
ON dept_emp.dept_no = departments.dept_no
WHERE departments.dept_name = 'Research and Development'
AND employees.birth_date < '1976-01-01';
```
3.查找员工数超过2人的部门名称和员工数。
```
SELECT departments.dept_name, COUNT(*) as employee_count
FROM dept_emp
INNER JOIN departments
ON dept_emp.dept_no = departments.dept_no
GROUP BY departments.dept_name
HAVING COUNT(*) > 2;
```
请使用Oracle 11g软件下默认账户scott提供的emp表和dept表完成如下SQL练习题,要求将sql语句及执行结果截图上传。 1. 请统计各部门的薪水情况:要求提供部门id、员工数、最高/最低/平均工资,对结果列取别名后展示。 2. 请找出比30号部门的所有员工工资都高的其他部门的员工信息。 3. 请找出各部门工资最高的员工, 展示其员工姓名、工资、所在部门名字【要求使用派生表实现】。 4. 找出其manager id为7698或7566,工资在1500-2850之外的,职位为CLERK或 ANALYST的员工信息。 5. 请找出工资大于2000的职员数最多的部门,列出部门号,工资大于2000的员工数。 6. 请找出员工工资均大于1000的部门其员工信息【要求不使用exists子查询】。 7. 请找出员工工资均大于1000的部门其员工信息【要求使用exists子查询】。 8. 请找出BLAKE所管理的员工信息。 9. 请找出以’S’开头或结尾的职位为MANAGER的员工信息及其所在部门名。 10. 创建视图,其内容为MANAGER的员工信息, 并通过视图插入新的MANAGER员工信息并对其进行删除【要求该视图只能针对MANAGER类型的员工记录进行操作】。
抱歉,由于我是一个AI语言模型,无法提供截图服务。但我可以给你提供SQL语句。
1.
```
SELECT d.deptno AS "部门ID", COUNT(e.empno) AS "员工数",
MAX(e.sal) AS "最高工资", MIN(e.sal) AS "最低工资", AVG(e.sal) AS "平均工资"
FROM emp e, dept d
WHERE e.deptno = d.deptno
GROUP BY d.deptno;
```
2.
```
SELECT *
FROM emp
WHERE sal > ALL (SELECT sal
FROM emp
WHERE deptno = 30)
AND deptno != 30;
```
3.
```
SELECT e.ename AS "员工姓名", e.sal AS "工资", d.dname AS "所在部门名"
FROM emp e, dept d,
(SELECT deptno, MAX(sal) AS max_sal
FROM emp
GROUP BY deptno) max_sal_emp
WHERE e.deptno = d.deptno
AND e.deptno = max_sal_emp.deptno
AND e.sal = max_sal_emp.max_sal;
```
4.
```
SELECT *
FROM emp
WHERE (mgr = 7698 OR mgr = 7566)
AND sal NOT BETWEEN 1500 AND 2850
AND (job = 'CLERK' OR job = 'ANALYST');
```
5.
```
SELECT d.deptno AS "部门号", COUNT(*) AS "员工数"
FROM emp e, dept d
WHERE e.deptno = d.deptno
AND e.sal > 2000
GROUP BY d.deptno
HAVING COUNT(*) >= ALL (SELECT COUNT(*)
FROM emp
WHERE sal > 2000
GROUP BY deptno);
```
6.
```
SELECT e.*
FROM emp e, dept d
WHERE e.deptno = d.deptno
GROUP BY e.deptno
HAVING MIN(e.sal) > 1000;
```
7.
```
SELECT e.*
FROM emp e
WHERE EXISTS (SELECT *
FROM dept d
WHERE e.deptno = d.deptno
GROUP BY d.deptno
HAVING MIN(e.sal) > 1000);
```
8.
```
SELECT *
FROM emp
WHERE mgr = (SELECT empno
FROM emp
WHERE ename = 'BLAKE');
```
9.
```
SELECT e.*, d.dname
FROM emp e, dept d
WHERE e.deptno = d.deptno
AND (e.job LIKE 'S%' OR e.job LIKE '%S')
AND e.job = 'MANAGER';
```
10.
```
CREATE VIEW manager_view AS
SELECT *
FROM emp
WHERE job = 'MANAGER';
INSERT INTO manager_view
VALUES (10000, 'NEW MANAGER', 'MANAGER', NULL, SYSDATE, 3000, NULL, 20);
DELETE FROM manager_view
WHERE ename = 'NEW MANAGER';
```