文章目录
1.查询和 Zlotkey 相同部门的员工姓名和工资
思考:
首先对题目进行拆分,以 “ 的 ” 为界限,①查询Zlotkey 相同部门;②查询员工姓名和工资
①+②可得出想要查询的内容
我的答案:
①部分的查询语句,很成功!
SELECT department_id
FROM employees
WHERE last_name = "Zlotkey "
②部分的查询语句
SELECT department_id,last_name,salary
FROM employees
//没有指明查询的条件是啥,就相当于没有对查询语句进行条件限制,So,没有卵用
WHERE (
SELECT department_id
FROM employees
WHERE last_name = "Zlotkey "
)
正确答案:
SELECT department_id,last_name,salary
FROM employees
WHERE department_id=(
SELECT department_id
FROM employees
WHERE last_name = "Zlotkey "
)
2.查询工资比公司平均工资高的员工的员工号,姓名和工资。
思考:
首先对问题进行拆分可知(以 “ 的 ” 为界限),①查询公司平均工资;②查询员工号,姓名和工资。③结合①部分和②部分,即可得出想要查询的内容
①部分的查询语句,很成功!
SELECT AVG(salary)
FROM employees
②部分的查询语句,很成功!
SELECT employee_id,last_name,salary
FROM employees
③部分,很成功!
SELECT employee_id,last_name,salary
FROM employees
WHERE salary >(
SELECT AVG(salary)
FROM employees
)
3.查询各部门中工资比本部门平均工资高的员工的员工号, 姓名和工资
思考:
本题我采用内连接,连接employees表和departments表,如果不连接的话就是下面的这个错误例子:↓
错误例子:结果表明只能查询到本部门平均工资最高的那位员工信息
select department_id,employee_id,last_name,salary
from employees
where salary >(
SELECT AVG(salary) AS 本部门平均工资
FROM employees
)
GROUP BY department_id
正确语句如下:
SELECT employee_id,last_name,salary,e.department_id
FROM employees e
INNER JOIN (
#通过employees表中的department_id来进行连接
SELECT AVG(salary) ag,department_id
FROM employees
GROUP BY department_id
) ag_dep
ON e.department_id = ag_dep.department_id
WHERE salary>ag_dep.ag ;
4.查询姓名中包含字母 u 的员工在相同部门的员工的员工号和姓名
思考
首先对问题进行拆分,①姓名中包含字母u的员工;②在相同部门的员工;③员工号和姓名
我的查询语句:
SELECT last_name,employee_id
FROM employees
WHERE department_id IN(
SELECT DISTINCT department_id
FROM employees
WHERE last_name LIKE '%u%'
);
查询结果如下:
5.查询在部门的location_id 为 1700 的部门工作的员工的员工号
思考:
首先对题目进行拆分可知,①在部门的location_id为1700;②在部门工作的员工的员工号。
我的查询语句如下:
SELECT employee_id
FROM employees e
INNER JOIN(
SELECT department_id
FROM departments
WHERE location_id = 1700
GROUP BY department_id
) dp
ON e.`department_id` = dp.department_id
老师的查询语句如下:
SELECT employee_id
FROM employees
WHERE department_id =ANY(
SELECT DISTINCT department_id
FROM departments
WHERE location_id = 1700
);
结果一样!
6.查询管理者是K_ing 的员工姓名和工资
思考;
①查询管理者K_ing
②查询K_ing手下的员工姓名和工资
我的代码如下:使用内连接进行查询操作
SELECT last_name,salary
FROM employees e
INNER JOIN (
SELECT employee_id
FROM employees
WHERE last_name="K_ing"
) m
ON e.manager_id = m.employee_id
老师的代码如下:
SELECT last_name,salary
FROM employees
WHERE manager_id IN(
SELECT employee_id
FROM employees
WHERE last_name = 'K_ing'
);
结果一样!
7.查询工资最高的员工的姓名,要求 first_name 和 last_name 显示为一列,列名为 姓·名
思考:
①查询最高工资
②查询最高工资员工姓名
我的代码如下:
SELECT CONCAT(first_name,last_name) AS 姓·名
FROM employees
WHERE salary =(
SELECT MAX(salary)
FROM employees
)