多表查询

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)

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

20       2175

10 2916.66667

SQL> --where和having的区别:where不能使用多行函数

SQL> --查询10号部门的平均工资

SQL> select deptno,avg(sal)

2  from emp

3  group by deptno

4  having deptno=10;

DEPTNO   AVG(SAL)

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

10 2916.66667

SQL> ed

已写入 file afiedt.buf

1  select deptno,avg(sal)

2  from emp

3  where deptno=10

4* group by deptno

SQL> /

DEPTNO   AVG(SAL)

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

10 2916.66667

SQL> --SQL优化 3. 尽量使用where

SQL> host cls

SQL> /*

SQL> group by 的增强

SQL> select deptno,job,sum(sal) from emp group by deptno,job

SQL> +

SQL> select deptno,sum(sal) from emp group by deptno

SQL> +

SQL> select sum(sal) from emp

SQL>

SQL> ====

SQL> select deptno,job,sum(sal) from emp group by rollup(deptno,job)

SQL>

SQL> 抽象

SQL> group by rollup(a,b)

SQL> =

SQL> group by a,b

SQL> +

SQL> group by a

SQL> +

SQL> 没有group by

SQL> */

SQL> select deptno,job,sum(sal) from emp group by rollup(deptno,job);

DEPTNO JOB         SUM(SAL)

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

10 CLERK           1300

10 MANAGER         2450

10 PRESIDENT       5000

10                 8750

20 CLERK           1900

20 ANALYST         6000

20 MANAGER         2975

20                10875

30 CLERK            950

30 MANAGER         2850

30 SALESMAN        5600

DEPTNO JOB         SUM(SAL)

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

30                 9400

29025

已选择 13 行。

SQL> break on deptno skip 2

SQL> select deptno,job,sum(sal) from emp group by rollup(deptno,job);

DEPTNO JOB         SUM(SAL)

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

10 CLERK           1300

MANAGER         2450

PRESIDENT       5000

8750

20 CLERK           1900

ANALYST         6000

MANAGER         2975

10875

DEPTNO JOB         SUM(SAL)

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

30 CLERK            950

MANAGER         2850

SALESMAN        5600

9400

29025

已选择 13 行。

SQL> break on null

SQL> /

DEPTNO JOB         SUM(SAL)

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

10 CLERK           1300

10 MANAGER         2450

10 PRESIDENT       5000

10                 8750

20 CLERK           1900

20 ANALYST         6000

20 MANAGER         2975

20                10875

30 CLERK            950

30 MANAGER         2850

30 SALESMAN        5600

DEPTNO JOB         SUM(SAL)

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

30                 9400

29025

已选择 13 行。

SQL> spool off

Oracle 数据库入门之----------------------多表查询相关推荐

  1. Oracle数据库中的多表查询

    经验查询: 在日后的开发之中,很多人都肯定要接触到许多新的数据库和数据表,那么在这种时候有两种做法: 做法一:新人做法,上来就直接输入以下的命令 select * from 表名称; 如果此时数据量较 ...

  2. Oracle数据库之一_多表查询

    Oracle数据库之一_多表查询 Oracle的查询是SQL语句的重点,在日常开发中,增删改查4项操作,查询占80%的工作量. Oracle的单表查询通常较简单,大多数时候,一个select * fr ...

  3. Oracle 数据库、实例、表空间、用户、数据库对象

    Oracle是一种数据库管理系统,是一种关系型的数据库管理系统.通常情况了我们称的"数据库",包含了物理数据.数据库管理系统.内存.操作系统进程的组合体,就是指这里所说的数据库管理 ...

  4. 如何将excel表导入oracle数据库,如何将EXCEL表导入ORACLE数据库中?【转】

    来源:https://zhidao.baidu.com/question/383828330.html?qbl=relate_question_2&word=excel%20%B1%ED%CA ...

  5. Oracle表里的照片怎么导出来,如何导出oracle数据库中某张表到excel_oracle数据库表格导出到excel...

    如何将oracle数据库表字段导成excel表格 这个你只要用ADO连oracle并获取记录集,根据你用的编程语言打开EXCEL,然后操作EXCEL对象的工作表就可以了.以VB为例: 1.在工程中引用 ...

  6. Oracle数据库用户角色、表空间创建、删除命令

    Oracle数据库用户角色.表空间创建.删除命令 //创建数据表空间 create tablespace BCC datafile 'D:\oracle\oradata\BCC\BCC.dbf' si ...

  7. 线性回归中oracle性质,66.Oracle数据库SQL开发之 高级查询——使用线性回归函数...

    66.Oracle数据库SQL开发之 高级查询--使用线性回归函数 线性回归函数可以用普通最小平方回归曲线拟合一组数值对.线性回归函数可用于聚合.串口或报表函数. 如下图1: 例如: store@PD ...

  8. Java数据库篇6——多表查询

    Java数据库篇6--多表查询 1.笛卡尔积 交叉连接查询 设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), ...

  9. oracle数据库插入多表,在Oracle数据库中插入嵌套表

    我是PL/SQL数据库的新学习者,这是一种给apex.oracle.com上的数据库应用指定序列的练习.然后我创建了表格,但是当填充与插入的代码如下所示,应用赋予错误,表你不介意,我需要你的帮助在Or ...

最新文章

  1. 深度优先搜索_0基础学算法 搜索篇第一讲 深度优先搜索
  2. 基于OpenCV实战:对象跟踪
  3. HI3519V101调试记录
  4. 浅谈Django的中间件与Python的装饰器
  5. bigquery sql 正则表达式
  6. 分布式事务不理解?一次给你讲清楚!
  7. linux下安装c/c++环境(gcc/gcc+)
  8. 安装mysql时安装不了starting the server_archlinux/manjaro 上安装percona-server
  9. xlrd对excel单列处理
  10. OpenCV图像发现轮廓函数findContours()的使用
  11. 字符输出流_Writer类FileWriter类介绍
  12. jcg q8 固件_JCG学院开设了Java设计模式课程!
  13. byte数组转blob类型_Java类型相互转换byte[]类型,blob类型
  14. python重定向作用_Python重定向不起作用
  15. Java程序员必备的11大Intellij插件
  16. 清明,我怀念那个回不去的故乡了
  17. Python大数据处理方案
  18. 关于计算机应用技术的创业策划书,计算机创业项目计划书.docx
  19. ssh弱口令暴力破解
  20. android espresso 教程,Espresso 设置说明

热门文章

  1. 微信小程序实现波浪动画效果
  2. 外贸行业薪资考核系统勤哲EXCEL服务器实现
  3. 音响DIY入门需要掌握的20种电路及简介
  4. Linux-1:微星主板+双系统安装Ubuntu18.04.5
  5. 我们都是IT民工---------流浪人IDE开发札记
  6. 21.2.22 T2 多米诺骨牌 真·详解
  7. 一线城市软件测试工资——你拖后腿了吗
  8. 软件生命周期(Life Cycle)
  9. 马化腾内部分享:产品经理必修课
  10. Oracle中merge into的使用方法