Mysql8.0习题系列(五):子查询(一篇搞懂子查询做题技巧,超详细)

Mysql8.0习题系列(五):子查询(一篇搞懂子查询做题技巧,超详细)本文已参与「新人创作礼」活动,一起开启掘金创作之路 Mysql8.0习题系列 软件下载地址 提取码:7v7u 数据下载地址 提取码:e6p9 子查询 1.查询和Zlotkey相同部门的员工姓名和工资

本文已参与「新人创作礼」活动,一起开启掘金创作之路

Mysql8.0习题系列

软件下载地址 提取码:7v7u 数据下载地址 提取码:e6p9

子查询

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

首先我们查出Zlotkey所在的部门,再放入子查询中进行选择

SELECT last_name,salary
FROM employees
WHERE department_id = (SELECT department_id FROM employees
WHERE last_name = 'Zlotkey'
);

2.查询工资比公司平均工资高的员工的员工号,姓名和工资。

先找出平均工资

SELECT employee_id,last_name, salary
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);

3.选择工资大于所有JOB_ID = ‘SA_MAN’的员工的工资的员工的last_name, job_id, salary

SELECT last_name, job_id, salary FROM employees
WHERE salary > (SELECT MAX(salary) FROM employees WHERE job_id	= 'SA_MAN');

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

SELECT employee_id, last_name
FROM employees
WHERE job_id IN (SELECT job_id FROM employees
WHERE last_name LIKE '%u%');

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

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

6.查询管理者是King的员工姓名和工资

SELECT last_name, salary
FROM employees
WHERE manager_id IN
(SELECT employee_id FROM employees WHERE last_name = 'King'
);

7.查询工资最低的员工信息: last_name, salary

SELECT last_name, salary
FROM employees
WHERE salary = (SELECT MIN(salary) FROM employees);

8.查询平均工资最低的部门信息

SELECT * FROM departments
WHERE department_id = (SELECT department_id FROM employees GROUP BY department_id
ORDER BY AVG(salary) LIMIT 0,1);

9.查询平均工资最低的部门信息和该部门的平均工资(相关子查询)

SELECT d.*, avg_sl.avg_dep FROM departments d,(SELECT department_id, AVG(salary) avg_dep FROM employees GROUP BY department_id
ORDER BY AVG(salary)) avg_sl
WHERE d.`department_id` = avg_sl.department_id
LIMIT 1
;

10.查询平均工资最高的 job 信息

SELECT * FROM jobs WHERE job_id = (SELECT job_id FROM employees GROUP BY job_id
ORDER BY AVG(salary) LIMIT 1);

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

SELECT department_id FROM employees
WHERE department_id IS NOT NULL
GROUP BY department_id
HAVING AVG(salary) > (SELECT AVG(salary) FROM employees);

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

SELECT * FROM employees WHERE employee_id 
IN (SELECT DISTINCT manager_id FROM employees);

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

SELECT department_id, MAX(salary) FROM employees GROUP BY department_id
ORDER BY MAX(salary) ASC LIMIT 1;

14.查询平均工资最高的部门的 manager 的详细信息: last_name, department_id, email, salary

SELECT last_name, department_id, email,salary
FROM employees
WHERE manager_id = (SELECT DISTINCT employee_id FROM employees GROUP BY department_id ORDER BY AVG(salary) DESC 
LIMIT 1); 

15. 查询部门的部门号,其中不包括job_id是”ST_CLERK”的部门号

SELECT department_id
FROM departments d
WHERE department_id NOT IN (
SELECT DISTINCT department_id
FROM employees
WHERE job_id = 'ST_CLERK'
);

16. 选择所有没有管理者的员工的last_name

#方法1SELECT last_name 
FROM employees
WHERE employee_id = (SELECT employee_id FROM employees WHERE manager_id IS NULL);

SELECT last_name
FROM employees e1
WHERE NOT EXISTS (
SELECT *
FROM employees e2
WHERE e1.manager_id = e2.employee_id
);

17.查询员工号、姓名、雇用时间、工资,其中员工的管理者为 ‘De Haan’

SELECT employee_id, last_name, hire_date, salary
FROM employees
WHERE manager_id = (
SELECT employee_id FROM employees WHERE last_name = 'De Haan'
);

18.查询各部门中工资比本部门平均工资高的员工的员工号, 姓名和工资(相关子查询)

SELECT employee_id, last_name, salary 
FROM employees e, (SELECT department_id, AVG(salary) av_dep 
FROM employees GROUP BY department_id) e2
WHERE e.`department_id` = e2.department_id
AND e.`salary` > av_dep;

19.查询每个部门下的部门人数大于 5 的部门名称(相关子查询)

方法一

SELECT department_name
FROM departments
WHERE department_id
IN (SELECT department_id
FROM employees GROUP BY department_id
HAVING COUNT(*) > 5);

方法二

SELECT department_name,department_id
FROM departments d
WHERE 5 < (
SELECT COUNT(*)
FROM employees e
WHERE d.`department_id` = e.`department_id`
);

20.查询每个国家下的部门个数大于 2 的国家编号(相关子查询)

SELECT country_id
FROM locations l 
WHERE 2 <(
SELECT COUNT(*) FROM departments d
WHERE l.`location_id` = d.`location_id`);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/13601.html

(0)

相关推荐

  • MYSQL使用group by,如何查询出总记录数[通俗易懂]

    MYSQL使用group by,如何查询出总记录数[通俗易懂]比如有这样一条SQL,根据t.user_id,t.report_date两个字段统计 这样前端页面能展示数据,但往往需要一个总记录数,在有分页的情况下用到 一种解决方法是在外面套一层,然后对其coun

    2023-01-24
    150
  • python搜索关键词_python检索

    python搜索关键词_python检索如何采集关键词检索结果,今天前嗅大数据就以古诗文网为例为大家演示,话不多说一起看看吧。 一. 网站内容 1. 网站截图说明 本教程通过“古诗文网”官网来采集所需“关键词”的正文数据,本教程以关键词“…

    2022-12-27
    143
  • mysql穿件序列的方式「建议收藏」

    mysql穿件序列的方式「建议收藏」–创建自增表 CREATE TABLE biz_tb_sequence ( NAME VARCHAR ( 50 ) NOT NULL, current_value INT NOT NULL, _in…

    2023-03-31
    160
  • 提高Python代码效率的利器,CDW Returns详解

    提高Python代码效率的利器,CDW Returns详解Python作为一门高级编程语言,通常用于快速开发。但是随着数据量的增大和程序的复杂度增加,Python代码的效率常常会成为程序性能提升的瓶颈。因此,在编写Python代码时,需要使用一些工具来提高代码效率。

    2024-01-07
    108
  • Python菜单按钮:提高网站用户交互

    Python菜单按钮:提高网站用户交互随着互联网的普及和发展,网站已经成为人们生活中不可或缺的一部分。而在众多网站中,如何提高网站的用户交互性成为了许多企业和个人关注的重点。良好的用户交互性能够吸引更多的用户,提高网站的访问量和留存率,进而提升企业的形象和品牌价值。而Python菜单按钮是提高网站用户交互的一种重要方式。

    2024-02-25
    101
  • python成长之对象篇(Python对象)

    python成长之对象篇(Python对象)在Python中,一切目标都共有一些特性,这些特性界说在PyObject中。PyObject界说在Include/object.h中:#definePyObject_HEAD\

    2023-10-31
    138
  • 计算机网络-应用层-NAT

    计算机网络-应用层-NATNAT是什么 NAT(Network Address Translation),是指网络地址转换,1994年提出的。NAT是用于在本地网络中使用私有地址,在连接互联网时转而使用全局 IP 地址的技术。

    2023-11-11
    147
  • Python判断文件是否存在

    Python判断文件是否存在文件是计算机中存储数据的重要载体。在Python中判断文件是否存在,是我们处理文件和数据的基础。本篇文章将介绍Python判断文件是否存在的方法,并从多个方面详细阐述。

    2024-06-22
    40

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注