MySQL_3_查询练习

先补充两个内容 ALL和ANY的用法

ALL和ANY运算符

它将单个值于子查询返回的单列值进行比较,ALL运算
符必须以比较运算符开头,比如:“>=,>,<,=等等。”

any表示有任何一个满足就返回true,all表示全部都满足才返回true
all 父查询中的结果集大于子查询中每一个结果集中的值,则为真

查询平均工资高于公司平均工资的部门有哪些?

SELECT `department_id`
FROM `employees`
GROUP BY department_id
HAVING AVG(salary) > (
SELECT AVG(salary)
FROM employees
);

查询出公司中所有 manager 的详细信息.

SELECT *
FROM `employees`
WHERE employee_id = ANY(
SELECT DISTINCT manager_id
FROM employees
)

各个部门的最高工资中最低的那个部门的最低工资是多少

SELECT MIN(salary)
FROM `employees`
GROUP BY `department_id`
HAVING MAX(salary) = ANY(
SELECT MAX(salary)
FROM `employees`
GROUP BY `department_id`
);

查询平均工资最高的部门的 manager 的详细信息:

SELECT department_id
FROM`employees`
GROUP BY `department_id`
ORDER BY AVG(salary) DESC
LIMIT 1;


SELECT manager_id
FROM employees
WHERE department_id = (
SELECT department_id
FROM`employees`
GROUP BY `department_id`
ORDER BY AVG(salary) DESC
LIMIT 1
);


SELECT *
FROM `employees`
WHERE manager_id = (
SELECT manager_id
FROM `departments`
WHERE department_id = (
SELECT department_id
FROM`employees`
GROUP BY `department_id`
ORDER BY AVG(salary) DESC
LIMIT 1
)
);
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容