MySQL子查询的一些练习(未完)

MySQL子查询的一些练习(未完)1.查询平均工资最低的部门的信息和该部门的平均工资 SELECT中用相关子查询 方式一: SELECT *,(SELECT AVG(salary) FROM employees t3 WHERE t3

MySQL子查询的一些练习(未完)

1.查询平均工资最低的部门的信息和该部门的平均工资
SELECT中用相关子查询

方式一:
SELECT *,(SELECT AVG(salary) FROM employees t3 WHERE t3.department_id = t1.department_id) "AVG_SAL"
FROM employees t1
WHERE t1.department_id = (SELECT department_id #找最低部门的ID
                          FROM employees t2
                          GROUP BY department_id
                          HARING AVG(salary) = (SELECT MIN(avg_sal) #找部门的最低工资
                                                FROM(SELECT AVG(salary) avg_sal #找部门的平均工资
                                                     FROM employees
                                                     GROUP BY department_id
                                                     ) "t_dept_avg_sal"
                                               )
                          );

方式二:使用ALL
SELECT *,(SELECT AVG(salary) FROM employees t3 WHERE t3.department_id = t1.department_id) "AVG_SAL"
FROM employees t1
WHERE t1.department_id = (SELECT department_id #找最低部门的ID
                          FROM employees t2
                          GROUP BY department_id
                          HARING AVG(salary) <= ALL (SELECT AVG(salary) 
                              /*已经在其中*/          FROM employees
                                                     GROUP BY department_id
                                                    )
                         );

方式三:使用LIMIT
SELECT t1.*,(SELECT AVG(salary) FROM employees t3 WHERE t3.department_id = t1.department_id) "AVG_SAL"
FROM employees t1
WHERE t1.department_id = (SELECT department_id #找最低部门的ID
                          FROM employees t2
                          GROUP BY department_id
                          HARING AVG(salary) = (SELECT AVG(salary) 
                                                FROM employees #直接显示出所要的数据(最低工资)
                                                GROUP BY department_id
                                                ORDER BY AVG(salary) ASC
                                                LIMIT 0,1
                                               )
                         );
 方式四:多表的连接
 SELECT *,(SELECT AVG(salary) FROM employees t3 WHERE t3.department_id = t1.department_id) "AVG_SAL"
 FROM employees t1 JOIN (SELECT department_id,AVG(salary)
                         FROM employees t2   #将已经查出最低工资部门的信息作为一张表
                         GROUP BY department_id
                         ORDER BY AVG(salary) ASC
                         LIMIT 0,1
                        )"t_dept_avg_sal"
 ON t1.department_id = t_dept_avg_sal.department_id;                        
 
 2.查询公司manger的id
#方式一:自连接
SELECT DISTINCT t1.empolye_id,
FROM employees t1 JOIN employees t2
WHERE t1.employee_id = t2.manger_id;

#子查询
SELECT T1.employee_id
FROM emplpoyees t1
WHERE t1.employee_id IN (SELECT DISTINCT t2.manger_id
                         FROM employees t2
                        );

#使用EXISTS          有 (NOT)IN 的时候通常可以改成 (NOT)EXISTS
SELECT T1.employee_id
FROM emplpoyees t1
WHERE EXISTS(SELECT *
             FROM employees t2
             WHERE t1.employee_id = t2.manger_id
            );
             
3.查询各个部门 中最高工资中最低的那个部门的 最低工资是多少 (与第一题类似,方法在这里就只写一种了)

#思路:先找出每个部门工资最高的数,再找其中工资最低的部门,然后在该部门中寻找低的工资
SELECT MIN(salary)
FROM emplpyees 
WHERE deparment_id = (SELECT deparment_id #找到部门的ID
                      FROM employees
                      GROUP BY depaetment_id
                      HARING MAX(salary) = (SELECT max(salary) max_sal                                                                           FROM employees #找到最高工资中最低的那个部门的工资
                                            GROUP BY department_id
                                            ORDER BY max_sal ASC
                                            LIMIT 1
                                           )
                    );

原文地址:https://www.cnblogs.com/wht-de-bk/archive/2022/03/07/15977830.html

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

(0)
上一篇 2023-05-08
下一篇 2023-05-08

相关推荐

  • Python的构造函数初探

    Python的构造函数初探作为Python工程师,构造函数是我们每天都在用的重要概念之一。在Python中,有很多地方都需要用到构造函数,而今天的文章就来详细介绍Python中构造函数的概念、用法及注意点。

    2024-07-22
    40
  • mysql主从同步出错故障处理总结[数据库技术]

    mysql主从同步出错故障处理总结[数据库技术]在发生故障切换后,经常遇到的问题就是同步报错,数据库很小的时候,dump完再导入很简单就处理好了,但线上的数据库都150G-200G,如果用单纯的这种方法,成本太高,故经过一段时间的摸索,总结了几种…

    2023-04-07
    139
  • Ubuntu20 安装mysql8并开启远程访问

    Ubuntu20 安装mysql8并开启远程访问ubuntu20.04使用命令安装数据库默认就是8.x版本的 1.安装 sudo apt-get install mysql-server mysql-client 2.修改配置文件 sudo vi…

    2023-04-12
    158
  • StoneDB for MySQL 5.7 版本发布「终于解决」

    StoneDB for MySQL 5.7 版本发布「终于解决」StoneDB_5.7_v1.0.0 的发行日志 支持MySQL 5.7 功能添加或改变 编译相关改动 配置相关改动 文档变更 BUG修复 欢迎大家关注我们的Github:https://github

    2023-06-03
    145
  • Jupyter Notebook运行代码

    Jupyter Notebook运行代码Jupyter Notebook是一个开源软件应用程序,用于创建和共享文学化的代码,支持多种编程语言,如Python,R和Julia。它的网页界面使用户能够编写和运行代码,创建注释和图形,并将所有这些组合在一个易于共享的文档中。

    2024-09-22
    13
  • PyCharm终端位置

    PyCharm终端位置PyCharm是一款功能强大的Python IDE,它提供了很多方便开发的工具和功能。在PyCharm中,终端也是一个非常重要的工具,它可以方便地执行命令,例如调试Python程序、运行pip命令等。

    2024-07-21
    38
  • Python嵌套定义:高效组织代码结构的秘诀

    Python嵌套定义:高效组织代码结构的秘诀Python是一种面向对象的编程语言,使用类(class)的概念进行代码组织。其中,类中可以包含方法(method),方法中可以包含变量(variable)、循环、条件判断、其他方法等。此外,Python中还引入了嵌套定义的概念,即将一个函数或方法定义在另一个函数或方法中。嵌套定义的使用可以减少全局变量的使用、实现代码模块的封装、提高代码的可读性等优点。

    2024-01-18
    98
  • MySQL多版本并发控制——MVCC机制分析[亲测有效]

    MySQL多版本并发控制——MVCC机制分析[亲测有效]
    MVCC,即多版本并发控制(Multi-Version Concurrency Control)指的是,通过版本链维护一个数据的多个版本,使得读写操作没有冲…

    2023-04-07
    157

发表回复

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