ORACLE聚合函数细节
select * from emp order by mgr;

概要
select count(1), --14
sum(1), --14
count(*), --14
count(distinct mgr),--6 --很多人不知道可以这么用
count(all mgr), --13 --这里也是被遗忘的角落
count(mgr) --13
from emp;

计数
原意:查询有多少记录,就随便选了个字段
select count(mgr) from emp;

本来应该是14条记录,但是只查到了13条,原因是当选定字段进行聚合计算的时候该字段受到一些规则的限制,
具体发生了什么,下面具体举例说明
count函数调用方法是:
count([distinct|all] columnnameOrNumber)
select count(distinct mgr), --
count(all mgr), --
count(mgr) --13
from emp;
count(distinct mgr)的意思是计算mgr字段中所有非空的不同值的个数
count(all mgr)的意思是计算mgr字段中所有非空的值的个数
count(mgr)默认调用count(all mgr)
select count(1), --
sum(1), --
count(*), --
from emp;
这里就很明朗了,不过不建议用count(*),涉及到sql解析的对资源消耗问题,
特别是实际的生产环境,比如我工作中遇到的表,一个表有500个字段,上亿条记录,
count(1)和count(*)还是会有很大差别的
当然还有很多其他聚合函数可以有([distinct|all] columnname)这种写法,
如avg,sum,stddev,variance,min,max...等等
最后送一个助消化的例子
select count( distinct mgr) from emp; select count(1) from (select distinct mgr from emp);
本来还想写嵌套聚合的情况的,但是觉得不要写太多,
所以下一次写一个嵌套聚合函数和开窗函数的细节
ORACLE聚合函数细节的更多相关文章
- Oracle 聚合函数
聚合函数: SQL中提供的聚合函数可以用来统计.求和.求最值等等. 此处采用Oracle 11g中其他用户SCOTT中的EMP表,进行演示. –COUNT:统计行数量 COUNT(*)统计的是结果集的 ...
- oracle聚合函数avg()注意点
avg:用avg函数进行平均运算时会忽略空值(即最终出现的平均值不对[如果原始数据中存在空值的话]),可以这样子来解决:avg(nvl(comm,0))或者sum(comm)/count(*)---- ...
- oracle 聚合函数 LISTAGG ,将多行结果合并成一行
LISTAGG( to_char(Item_Category_Name), ',') WITHIN GROUP(ORDER BY Item_Category_Name) -- 将 Item_Cate ...
- oracle聚合函数XMLAGG用法简介
XMLAGG函数语法基本如图,可以用于列转行,列转行函数在oracle里有好几种方法,wm_concat也可以做 这里介绍wm_concat是因为XMLAGG实现效果和wm_concat是一样的,只是 ...
- Oracle聚合函数
max(),min(),avg(),sum() 其中 avg(),sum()只能操作数字 , max(),min()能操作数字.日期.字母 等.
- oracle聚合函数及行专列,pivot rollup cube
1.原始数据 --方法-: --以单位分组,计算每类特殊情况的合计以及按照单位的小计数 with a as (SELECT b.szfz, case when tsqk is not null th ...
- oracle数据库函数之============‘’分析函数和聚合函数‘’
1分析函数 分析函数根据一组行来进行聚合计算,用于计算完成狙击的累积排名等,分析函数为每组记录返回多个行 rank_number() 查询结果按照次序排列,不存在并列和站位的情况,可以用于做Oracl ...
- ORACLE 自定义聚合函数
用户可以自定义聚合函数 ODCIAggregate,定义了四个聚集函数:初始化.迭代.合并和终止. Initialization is accomplished by the ODCIAggrega ...
- oracle 自定义聚合函数(MAX_O3_8HOUR_ND) 计算最大的臭氧8小时滑动平均值
create or replace function MAX_O3_8HOUR_ND(value NUMBER) return NUMBER parallel_enable aggregate usi ...
随机推荐
- 利刃 MVVMLight 5:绑定在表单验证上的应用
表单验证是MVVM体系中的重要一块.而绑定除了推动 Model-View-ViewModel (MVVM) 模式松散耦合 逻辑.数据 和 UI定义 的关系之外,还为业务数据验证方案提供强大而灵活的支持 ...
- Java NIO之通道
一.前言 前面学习了缓冲区的相关知识点,接下来学习通道. 二.通道 2.1 层次结构图 对于通道的类层次结构如下图所示. 其中,Channel是所有类的父类,其定义了通道的基本操作.从 Channel ...
- npm详解
一.npm介绍及安装 对于npm,大家多多少少都用过,作为一门技术,我想写篇博客记录一下,一起分享,一起学习. npm,是Node Package Manager的缩写,node的模块管理器,它是随同 ...
- JQ实现选中以后就左右移动
<head> <meta charset="utf-8" /> <title>select_option移动</title> < ...
- FreeSWITCH 安装配置的 各种坑, 填坑
个人安装环境: OS:CentOS6.7 64位 FreeSWITCH Ver:1.6.17 一. 编译出错 安装 之前, 最好 先安装 这几个东西(如果有, 请忽略): yasm (有nasm的话 ...
- vue.js随笔记---初识Vue.js
1.基础要求: 1.1 HTML CSS JAVASCRIPT 1.2 模块化基础 1.3 Es6初步了解 2.vue.js 轻量级的MVVM模式框架,他同时吸收了recat和angular的优点,他 ...
- App内切换语言
前几天客户提需求,对App增加一个功能,这个功能目前市面上已经很常见,那就是应用内切换语言.啥意思,就是 英.中.法.德.日...语言随意切换. (本案例采用Data-Bingding模式,麻麻再也不 ...
- linux下删除乱码文件、目录
由于编码原因,在linux服务器上上传.创建中文文件或目录时,会产生乱码,如果想删除它,发现用rm命令是删除不了的 这种情况下,用find命令可以删除乱码的文件或目录. 首先进入乱码文件或目录所在的目 ...
- 大数据及hadoop相关知识介绍
一.大数据的基本概念 1.1什么是大数据 互联网企业是最早收集大数据的行业,最典型的代表就是Google和百度,这两个公司是做搜索引擎的,数量都非常庞大,每天都要去把互联网上的各种各样的网页信息抓取下 ...
- Start to write blogs 【开始写博客】
I used to be lazy and wrote no blogs. I used to live at leisure and wasted opportunity. Time flies, ...