多表查询与分组统计

目录

查询每个部门的名称、部门人数、平均工资

查询每个部门的编号、名称、位置、部门人数、平均工资


Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645

group by 子句是在 where子句之后运行的,所以在使用时可以进行限定查询,也可以进行多表查询

查询每个部门的名称、部门人数、平均工资

●  确定要使用的数据表
  dept 表:部门名称。
  emp 表:统计数据。

●  确定已知的关联字段
  员工与部门: emp.deptno=dept.deptno。

第一步:查询出每个部门的名称、员工编号、基本工资 

SQL> select d.dname,e.empno,e.sal
  2  from emp e,dept d
  3  where e.deptno=d.deptno;

DNAME                             EMPNO        SAL
---------------------------- ---------- ----------
ACCOUNTING                         7839       5000
ACCOUNTING                         7782       2450
ACCOUNTING                         7934       1300
RESEARCH                           7902       3000
RESEARCH                           7369        800
RESEARCH                           7566       2975
SALES                              7900        950
SALES                              7844       1500
SALES                              7654       1250
SALES                              7521       1250
SALES                              7499       1600
SALES                              7698       2850

第二步:此时的查询结果中,部门名称部分出现了重复的内容

按照分组来说,只要是出现了数据的重复,那么就可以进行分组,只不过此时的分组是针对临时表(查询结果)的

既然已经确定了 dname 上存在重复记录,那么就直接对 dname 分组即可

SQL> select d.dname,count(e.empno),avg(e.sal)
  2  from emp e,dept d
  3  where e.deptno=d.deptno
  4  group by d.dname;

DNAME                        COUNT(E.EMPNO) AVG(E.SAL)
---------------------------- -------------- ----------
RESEARCH                                  3 2258.33333
SALES                                     6 1566.66667
ACCOUNTING                                3 2916.66667

第三步:在 dept 表中实际上存在 4 个部门的信息,而此时的要求也是统计所有的部门名称,

根据前面介绍的情况,如果发现数据不完整,立刻使用外连接

SQL> select d.dname,count(e.empno),avg(e.sal)
  2  from emp e,dept d
  3  where e.deptno(+)=d.deptno
  4  group by d.dname;

DNAME                        COUNT(E.EMPNO) AVG(E.SAL)
---------------------------- -------------- ----------
RESEARCH                                  3 2258.33333
SALES                                     6 1566.66667
ACCOUNTING                                3 2916.66667
OPERATIONS                                0

查询每个部门的编号、名称、位置、部门人数、平均工资

 ●  确定要使用的数据表
  dept 表:编号、名称、位置
  emp 表:统计信息

●  确定已知的关联字段
  员工与部门: emp.deptno=dept.deptno。

  第一步:查询出每个部门的编号、名称、位置、员工编号、工资

SQL> select d.deptno,d.dname,d.loc,e.empno,e.sal
  2  from emp e,dept d
  3  where e.deptno(+)=d.deptno;

    DEPTNO DNAME                        LOC                             EMPNO        SAL
---------- ---------------------------- -------------------------- ---------- ----------
        10 ACCOUNTING                   NEW YORK                         7839       5000
        10 ACCOUNTING                   NEW YORK                         7782       2450
        10 ACCOUNTING                   NEW YORK                         7934       1300
        20 RESEARCH                     DALLAS                           7902       3000
        20 RESEARCH                     DALLAS                           7369        800
        20 RESEARCH                     DALLAS                           7566       2975
        30 SALES                        CHICAGO                          7900        950
        30 SALES                        CHICAGO                          7844       1500
        30 SALES                        CHICAGO                          7654       1250
        30 SALES                        CHICAGO                          7521       1250
        30 SALES                        CHICAGO                          7499       1600
        30 SALES                        CHICAGO                          7698       2850
        40 OPERATIONS                   BOSTON

 第二步:此时发现有 3 个列(dept 表)同时发生着重复,那么就可以进行多字段分组

SQL> select d.deptno,d.dname,d.loc,count(e.empno),avg(e.sal)
  2  from emp e,dept d
  3  where e.deptno(+)=d.deptno
  4  group by d.deptno,d.dname,d.loc;

    DEPTNO DNAME                        LOC                        COUNT(E.EMPNO) AVG(E.SAL)
---------- ---------------------------- -------------------------- -------------- ----------
        10 ACCOUNTING                   NEW YORK                                3 2916.66667
        20 RESEARCH                     DALLAS                                  3 2258.33333
        30 SALES                        CHICAGO                                 6 1566.66667
        40 OPERATIONS                   BOSTON                                  0

相关推荐

  1. Mysql查询统计

    2024-02-22 17:48:02       23 阅读
  2. MySQL - 查询

    2024-02-22 17:48:02       41 阅读
  3. MySQL-查询

    2024-02-22 17:48:02       41 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-22 17:48:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-22 17:48:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-22 17:48:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-22 17:48:02       18 阅读

热门阅读

  1. 【计算机网络:DHCP协议】

    2024-02-22 17:48:02       25 阅读
  2. 有向图的邻接表和邻接矩阵

    2024-02-22 17:48:02       25 阅读
  3. PO DO VO DTO BO POJO

    2024-02-22 17:48:02       27 阅读
  4. Android 多渠道配置

    2024-02-22 17:48:02       24 阅读
  5. Dockerfile第十七章 : Dockerfile文件与指令说明

    2024-02-22 17:48:02       29 阅读
  6. 注意力机制 究竟是什么?

    2024-02-22 17:48:02       33 阅读
  7. centerOS docker搭建flowable,流程引擎

    2024-02-22 17:48:02       28 阅读
  8. 【Docker】基于yum安装docker

    2024-02-22 17:48:02       34 阅读
  9. Docker介绍与使用

    2024-02-22 17:48:02       30 阅读
  10. 188-成年人的世界没有对错,只有利益是吗?

    2024-02-22 17:48:02       24 阅读
  11. Nginx的流式响应配置

    2024-02-22 17:48:02       27 阅读