前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle 数据库入门之----------------------多表查询

Oracle 数据库入门之----------------------多表查询

原创
作者头像
互联网CEO
修改2018-12-12 10:16:18
5850
修改2018-12-12 10:16:18
举报

多表查询

 

SQL> --工资总额

SQL> select sum(sal) from emp;

 

  SUM(SAL)                                                                                                                                                                                              

----------                                                                                                                                                                                              

     29025                                                                                                                                                                                              

 

SQL> --人数

SQL> select count(*) from emp;

 

  COUNT(*)                                                                                                                                                                                              

----------                                                                                                                                                                                              

        14                                                                                                                                                                                              

 

SQL> --平均工资

SQL> select sum(sal)/count(*) 一,avg(sal) 二 from emp;

 

        一         二                                                                                                                                                                                   

---------- ----------                                                                                                                                                                                   

2073.21429 2073.21429                                                                                                                                                                                   

 

SQL> --平均奖金

SQL> select sum(comm)/count(*) 一,sum(comm)/count(comm) 二,avg(comm) 三

  2  from emp;

 

        一         二         三                                                                                                                                                                        

---------- ---------- ----------                                                                                                                                                                        

157.142857        550        550                                                                                                                                                                        

 

SQL> select count(*), count(comm) from emp;

 

  COUNT(*) COUNT(COMM)                                                                                                                                                                                  

---------- -----------                                                                                                                                                                                  

        14           4                                                                                                                                                                                  

 

SQL> select * from emp;

 

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO                                                                                                              

---------- ---------- --------- ---------- -------------- ---------- ---------- ----------                                                                                                              

      7369 SMITH      CLERK           7902 17-12月-80            800                    20                                                                                                              

      7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300         30                                                                                                              

      7521 WARD       SALESMAN        7698 22-2月 -81           1250        500         30                                                                                                              

      7566 JONES      MANAGER         7839 02-4月 -81           2975                    20                                                                                                              

      7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400         30                                                                                                              

      7698 BLAKE      MANAGER         7839 01-5月 -81           2850                    30                                                                                                              

      7782 CLARK      MANAGER         7839 09-6月 -81           2450                    10                                                                                                              

      7788 SCOTT      ANALYST         7566 19-4月 -87           3000                    20                                                                                                              

      7839 KING       PRESIDENT            17-11月-81           5000                    10                                                                                                              

      7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0         30                                                                                                              

      7876 ADAMS      CLERK           7788 23-5月 -87           1100                    20                                                                                                              

 

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO                                                                                                              

---------- ---------- --------- ---------- -------------- ---------- ---------- ----------                                                                                                              

      7900 JAMES      CLERK           7698 03-12月-81            950                    30                                                                                                              

      7902 FORD       ANALYST         7566 03-12月-81           3000                    20                                                                                                              

      7934 MILLER     CLERK           7782 23-1月 -82           1300                    10                                                                                                              

 

已选择 14 行。

 

SQL> --null值 5. 组函数会自动滤空;

SQL> select count(*), count(nvl(comm,0)) from emp;

 

  COUNT(*) COUNT(NVL(COMM,0))                                                                                                                                                                           

---------- ------------------                                                                                                                                                                           

        14                 14                                                                                                                                                                           

 

SQL> --null值 5. 组函数会自动滤空;可以嵌套滤空函数来屏蔽他的滤空功能

SQL> host cls

 

SQL> --每个部门的平均工资

SQL> select deptno,avg(sal)

  2  from emp

  3  group by deptno;

 

    DEPTNO   AVG(SAL)                                                                                                                                                                                   

---------- ----------                                                                                                                                                                                   

        30 1566.66667                                                                                                                                                                                   

        20       2175                                                                                                                                                                                   

        10 2916.66667                                                                                                                                                                                   

 

SQL> --多个列的分组

SQL> select deptno,job,sum(sal)

  2  from emp

  3  group by deptno,job

  4  order by 1;

 

    DEPTNO JOB         SUM(SAL)                                                                                                                                                                         

---------- --------- ----------                                                                                                                                                                         

        10 CLERK           1300                                                                                                                                                                         

        10 MANAGER         2450                                                                                                                                                                         

        10 PRESIDENT       5000                                                                                                                                                                         

        20 ANALYST         6000                                                                                                                                                                         

        20 CLERK           1900                                                                                                                                                                         

        20 MANAGER         2975                                                                                                                                                                         

        30 CLERK            950                                                                                                                                                                         

        30 MANAGER         2850                                                                                                                                                                         

        30 SALESMAN        5600                                                                                                                                                                         

 

已选择 9 行。

 

SQL> --多个列的分组: 先按照第一个列分组,如果相同,再第二个列分组,以此类推

SQL> --查询平均工资大于2000的部门

SQL> select deptno,avg(sal)

  2  from emp

  3  group by deptno

  4  having avg(sal) > 2000;

 

    DEPTNO   AVG(SAL)                                                                                  

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档