SQL子查询

本文通过SQL查询演示了如何获取与特定员工在同一部门的同事信息、工资高于公司平均薪资的员工、部门内薪资高于平均的员工、同名含特定字母的员工、指定地点部门的员工以及由特定管理者领导的员工。同时,还展示了如何找到最高薪资员工的姓名。这些查询涵盖了多表联接、子查询和聚合函数的应用。
摘要由CSDN通过智能技术生成

#SQL查询

#1. 查询和 Zlotkey 相同部门的员工姓名和工资
#查询Zlotkey的部门

SELECT `department_id`
FROM `employees`
WHERE `last_name` = 'Zlotkey';

SELECT `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`
WHERE `salary` > (
	SELECT AVG(`salary`)
	FROM `employees`
);



#3. 查询各部门中工资比本部门平均工资高的员工的员工号, 姓名和工资
SELECT AVG(`salary`)
FROM `employees`
GROUP BY `department_id`;


SELECT  `employee_id`,`last_name`,`salary`
FROM `employees` e
INNER JOIN (
	SELECT AVG(`salary`) ag ,`department_id`
	FROM `employees`
	GROUP BY `department_id`
) ad_dep
ON e.`department_id` = ad_dep.`department_id`
WHERE `salary` > ad_dep.ag;


#4. 查询和姓名中包含字母 u 的员工在相同部门的员工的员工号和姓名

SELECT  DISTINCT `department_id`
FROM `employees`
WHERE `last_name` LIKE '%u%'


SELECT `employee_id`,`last_name`
FROM `employees` e
WHERE `department_id` IN (
	SELECT  DISTINCT `department_id`
	FROM `employees`
	WHERE `last_name` LIKE '%u%'
);

#5. 查询在部门的 location_id 为 1700 的部门工作的员工的员工号

SELECT `department_id`
FROM `departments`
WHERE `location_id` = 1700;

SELECT `employee_id`
FROM `employees` e
INNER JOIN (
	SELECT `department_id`
	FROM `departments`
	WHERE `location_id` = 1700
) lo
ON e.`department_id` = lo.`department_id`;

SELECT `employee_id`
FROM `employees`
WHERE `department_id` = ANY(
	SELECT `department_id`
	FROM `departments`
	WHERE `location_id` = 1700
);



#6. 查询管理者是 King 的员工姓名和工资
SELECT `employee_id`
FROM `employees`
WHERE `last_name` = 'K_ing'

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 MAX(`salary`)
FROM `employees`

SELECT CONCAT(`first_name`,`last_name`)  姓名
FROM `employees`
WHERE salary = (
	SELECT MAX(`salary`)
	FROM `employees`
);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值