Oracle入门基础(四)一一多行函数
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                                                                                                              
SQL> --null值 5. 组函数会自动滤空;
SQL> select count(*), count(nvl(comm,0)) from emp;
  COUNT(*) COUNT(NVL(COMM,0))
        14                 14                                                                                                                                                                           
SQL> --null值 5. 组函数会自动滤空;可以嵌套滤空函数来屏蔽他的滤空功能
SQL> --每个部门的平均工资
SQL> select deptno,avg(sal)  from emp group by deptno;
    DEPTNO   AVG(SAL)
        30 1566.66667
        20       2175
        10 2916.66667                                                                                                                                                                                   
SQL> --多个列的分组
SQL> select deptno,job,sum(sal) from emp group by deptno,job order by 1;
    DEPTNO JOB         SUM(SAL)
        10 CLERK           1300
        10 MANAGER         2450
        20 ANALYST         6000
        20 CLERK           1900                                                                                                                                                                         
SQL> --多个列的分组: 先按照第一个列分组,如果相同,再第二个列分组,以此类推
SQL> --查询平均工资大于2000的部门
SQL> select deptno,avg(sal) from emp group by deptno having avg(sal) > 2000;
    DEPTNO   AVG(SAL)
        20       2175
        10 2916.66667                                                                                                                                                                                   
SQL> --where和having的区别:where不能使用多行函数
SQL> --查询10号部门的平均工资
SQL> select deptno,avg(sal) from emp group by deptno 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> 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> select deptno,job,sum(sal) from emp group by rollup(deptno,job)
    DEPTNO JOB         SUM(SAL)
        10 CLERK           1300
        10 MANAGER         2450
        10                 8750
        20 CLERK           1900
        20 ANALYST         6000
        20                10875
        30 CLERK            950
        30 MANAGER         2850
        30 SALESMAN        5600                                                                                                                                                                         
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
        30 CLERK            950
           MANAGER         2850
           SALESMAN        5600
                           9400
                          29025                                                                                                                                                                         
SQL> break on null
Oracle入门基础(四)一一多行函数的更多相关文章
- Oracle入门基础(三)一一单行函数
		SQL> --字符函数 SQL> select lower('Hello World') 转小写,upper('Hello World') 转大写,initcap('hello world ... 
- Oracle入门基础(五)一一多表查询
		SQL> --等值连接 SQL> --查询员工信息:员工号 姓名 月薪 部门名称 SQL> set linesize 80 SQL> desc dept 名称 是否为空? 类型 ... 
- Oracle入门基础(1)
		1.数据库系统和数据管理系统的区别? 数据库系统=数据库的管理系统+oper操作员+硬件 2.Oracle的版本 8i /9i 10g/11g 12c(cloud) 3.Oracle主要组 ... 
- Oracle学习第三篇—多行函数
		0 order by asc/desc 默认升序 order by 列的名字|表达式|别名|序号 把空放在后边:order by desc nulls last 1分组函数--会自动滤空值 count ... 
- Oracle入门基础(十)一一数据库其他对象-视图/序列/索引/同义词
		SQL> --视图 SQL> create view empinfoview as select e.empno,e.ename,e.sal,e.sal*12 annsal,d.dname ... 
- Oracle入门基础(八)一一数据处理
		SQL> SQL的类型 SQL> 1.DML(Data Manipulation Language 数据操作语言): select insert update delete SQL> ... 
- Oracle入门基础(七)一一集合运算
		SQL> /* SQL> 查询10和20号部门的员工 SQL> 1. select * from emp where deptno=10 or deptno=20; SQL> ... 
- Oracle入门基础(六)一一子查询
		SQL> --查询工资比SCOTT高的员工信息 SQL> --1. SCOTT的工资 SQL> select sal from emp where ename='SCOTT'; SA ... 
- Oracle入门基础(一)一一基本查询
		SQL> --当前用户 SQL> show user SQL> --当前用户下的表 SQL> select * from tab; TNAME TABTYPE CLUSTERI ... 
随机推荐
- k8s集群搭建EFK日志平台:ElasticSearch + Fluentd + Kibana
			k8s集群 kubectl get node EFK简介 ElasticSearch:分布式存储检索引擎,用来搜索.存储日志 Fluentd:日志采集 Kibana:读取es中数据进行可视化web界面 ... 
- [Graphviz]一些简单的例子(未完待续)
			本文参考:http://wenku.baidu.com/link?url=kTPIn5tBY4eboEPZeOZyLwHAq-fSMoTbagsqcG5-IcpL325tnnh3ES8aky-PBjP ... 
- 「Excel实用技巧」拿下这个报表工具,轻松给报表加水印!
			水印报表是什么?怎么给excel表格加水印? 许多时候,为了防止报表被盗.保护信息安全和保护版权,采用水印能够有效实现该需求.水印是为了防止报表被盗.进行真伪鉴别.版权保护等,而在报表中添加半透明的图 ... 
- windev中使用DateFile和Query作为表格数据源的一个重要区别
			表格可以使用DateFile(数据表)和Query(查询表)作为数据源,在列表页面中,因为表格一般都设置为不可编辑,所以这两者在表现使用上,区别都不大.尽管如此,我们还是需要清晰的知道,这两者本质上的 ... 
- 【C# IO 操作 】内存包装类 Memory <T>和 Span<T> 相关类型
			简介 .NET 包含多个相互关联的类型,它们表示任意内存的连续的强类型区域. 这些方法包括: System.Span<T> 用于访问连续的内存区域 得到该类型的实例: 1个T类型的数组 1 ... 
- P4-可编程语言代码学习
			(1).behavioral-model 简称bmv2 P4程序首先经过p4c-bm模块编译成JSON格式的配置文件,然后将配置文件载入到bmv2中,转化成能实现交换机功能的数据结构. behavio ... 
- qt(一)
			一.Qt安装 qt离线安装地址:http://download.qt.io/archive/qt/ 参考教程:https://blog.csdn.net/u013934107/article/deta ... 
- LeetCode-013-罗马数字转整数
			罗马数字转整数 题目描述:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 ... 
- LeetCode-026-删除有序数组中的重复项
			删除有序数组中的重复项 题目描述:给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度. 不要使用额外的数组空间,你必须在 原地 修改输入数组 ... 
- layui ajax删除
			表单页面 //监听行工具事件 table.on('tool(test)', function(obj){ var data = obj.data; //console.log(obj) if(obj. ... 
