文章目录
进阶练习
案例1:查询和Zlotkey相同部门的员工姓名和工资
分析:①查询Zlotkey的部门编号;②:在①的基础上进行查找姓名和工资
SELECT last_name,salary
FROM employees
WHERE department_id = (
SELECT department_id
FROM employees
WHERE last_name = 'Zlokey';
);
案例2:查询工资比公司平均工资高的员工的员工号、姓名和工资
分析:①查询公司的平均工资;②:在①的基础上查询员工号、姓名和工资
SELECT employee_id,last_name,salary
FROM employees
WHERE salary > (
SELECT AVG(salary)
FROM employees
);
案例3:查询各部门中工资比本部门的平均工资高的员工的员工号,姓名和工资
分析:①查询每个部门的平均工资;②查询员工的工资并和对应的部门平均工资比较筛选
SELECT employee_id,last_name,e.salary,e.department_id
FROM employees e
INNER JOIN (
SELECT AVG(salary) avs,department_id
FROM employees
GROUP BY department_id
) avgSalary
ON e."department_id" = avgSalary.'department_id'
WHERE e.salary > avs;
案例4:查询和姓名中包含字母u的员工在相同部门的员工的员工号和姓名
分析:①:查询姓名中包含字母u的员工的部门编号
②:在①的基础上查找员工的员工号和姓名
SELECT employee_id,last_name
FROM employees
WHERE employee_id IN (
SELECT department_id
FROM employees
WHERE last_name LIKE '%e%'
);
案例5:查询在部门的location_id为1700的部门工作的员工的员工号
分析:①查询location_id为1700的部门编号;②:在①的基础上查询
SELECT employee_id
FROM employees
WHERE department_id = ANY(
SELECT department_id
FROM departments
WHERE location_id = 1700
);
案例6:查询管理者是King的员工姓名和工资
分析:查询姓名为King的employee_id–>将其作为manager_id并查询满足条件的记录
SELECT last_name,salary
FROM employees
WHERE manager_id IN (
SELECT employee_id
FROM employees
WHERE last_name = 'King'
);
案例7:查询工资最高的员工姓名,要求first_name和last_name显示为列,类名为’姓名’
分析:查询最高工资–>查询工资最高的员工姓名–>将first_name和last_name连接在一起
SELECT CONCAT(last_name,first_name) "姓名"
FROM employees
WHERE salary = (
SELECT MAX(salary)
FROM employees
);