Oracle DB 组函数

? 组函数:

– 类型和语法

– 使用AVG、SUM、MIN、MAX、COUNT

– 在组函数中使用DISTINCT关键字

– 组函数中的NULL值

  • 何谓组函数

组函数会对行集进行计算,为每个组提供一个结果。

与单行函数不同,组函数用于对行集进行计算,从而为每个组提供一个结果。这些集合可以包含整个表,也可以包含表分割成的组。

  • 组函数的类型

? AVG

? COUNT

? MAX

? MIN

? STDDEV

? SUM

? VARIANCE

每个函数都接受一个参数。下表列出了在语法中可使用的选项:

  • 组函数:语法

SELECT  group_function(column), ...

FROM table

[WHERE condition]

[ORDER BY column];

组函数:语法

组函数应放在SELECT关键字之后。可以使用逗号分隔多个组函数。

使用组函数的准则:

? DISTINCT使函数仅考虑非重复值;ALL使函数考虑每个值(包括重复值)。默认值为ALL,因此无需指定。

? 使用expr参数的函数的数据类型可以是CHAR、VARCHAR2、NUMBER或DATE。

? 所有组函数都忽略空值。要用一个值替代空值,使用NVL、NVL2、COALESCE、CASE或DECODE函数。

  • 使用AVG和SUM函数

可以对数字数据使用AVG和SUM函数。

[email protected]> SELECT AVG(salary),
MAX(salary),MIN(salary), SUM(salary)
 FROM employees WHERE job_id
LIKE ‘%REP%‘;

AVG(SALARY) MAX(SALARY) MIN(SALARY) SUM(SALARY)

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

 8272.72727       11500      
 6000      273000

可以对能够存储数字数据的列使用AVG、SUM、MIN和MAX函数。示例显示所有销售代表的月薪平均值、最高值、最低值与总和。

使用MIN和MAX函数

可以对数字、字符和日期数据类型使用MIN和MAX函数。

[email protected]> SELECT MIN(hire_date), MAX(hire_date) FROM
employees;

MIN(HIRE_DATE)     MAX(HIRE_DATE)

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

13-JAN-01          21-APR-08

可以对数字、字符和日期数据类型使用MAX和MIN函数。示例显示任职时间最短和最长的雇员。

下面的示例显示在包含所有雇员的列表中,按字母顺序排列姓氏时位于首位及位于末位的雇员姓氏:

[email protected]> SELECT MIN(last_name), MAX(last_name) FROM
employees;

MIN(LAST_NAME)          
 MAX(LAST_NAME)

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

Abel                  
   Zlotkey

注:AVG、SUM、VARIANCE和STDDEV函数仅可用于处理数字数据类型。MAX和MIN函数不能用于处理LOB或LONG数据类型。

  • 使用COUNT函数

COUNT(*)将返回表中的行数:

[email protected]> SELECT COUNT(*) FROM employees WHERE department_id =
50;

  COUNT(*)

----------

        45

示例显示部门50 中雇员的数量。

COUNT(expr)将返回expr为非空值的行的数量:

[email protected]> SELECT COUNT(commission_pct) FROM employees WHERE
department_id = 80;

COUNT(COMMISSION_PCT)

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

                 
 34

示例显示部门80 中可以获得佣金的雇员的数量。

COUNT函数有以下三种格式:

? COUNT(*)

? COUNT(expr)

? COUNT(DISTINCT expr)

COUNT(*)用于返回表中符合SELECT语句标准的行数,包括重复行和在任何列中含有空值的行。如果SELECT语句中包含WHERE子句,则COUNT(*)会返回符合WHERE子句中条件的行数。相反,COUNT(expr)返回由expr标识的列中非空值的数量。COUNT(DISTINCT
expr)返回由expr标识的列中不同非空值的数量。

  • 使用DISTINCT关键字

? COUNT(DISTINCT expr)将返回expr的不同非空值的数量。

? 要显示EMPLOYEES表中不同部门值的数量,可使用:

[email protected]> SELECT COUNT(DISTINCT department_id) FROM
employees;

COUNT(DISTINCTDEPARTMENT_ID)

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

                   
      11

使用DISTINCT关键字可以避免对某一列中的任何重复值进行计数。

示例显示EMPLOYEES表中不同部门值的数量。

  • 组函数和空值

组函数将忽略列中的空值:

[email protected]> SELECT AVG(commission_pct) FROM employees;

AVG(COMMISSION_PCT)

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

         .222857143

仅根据在表的COMMISSION_PCT列中存储了有效值的行计算平均值。平均值的计算方法是用付给所有雇员的佣金总和除以获得佣金的雇员数(4)。

NVL函数会强制组函数包括空值:

[email protected]> SELECT AVG(NVL(commission_pct, 0)) FROM
employees;

AVG(NVL(COMMISSION_PCT,0))

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

               
.072897196

根据表中的所有行计算平均值,不考虑COMMISSION_PCT列中是否存储空值。平均值的计算方法是用付给所有雇员的佣金总和除以公司中的雇员总数(20)。

所有组函数都忽略列中的空值。但是,NVL函数会强制组函数包括空值。

Oracle DB 组函数

时间: 2024-10-14 01:40:20

Oracle DB 组函数的相关文章

ORACLE SQL 组函数【weber出品必属精品】

组函数:对一组数据进行加工,每组数据返回一个值 常用的组函数:count()  avg()  max()   min()  sum()   count()函数  1. count(*) :返回总共的行数,不去除NULL值 2. count(column):返回非NULL行的数量 SQL> select count(*) ,count(sal),count(comm) from emp; COUNT(*) COUNT(SAL) COUNT(COMM) ---------- ---------- -

Oracle组函数、多表查询、集合运算、数据库对象(序列、视图、约束、索引、同义词)等

count组函数:(过滤掉空的字段) select count(address),count(*) from b_user max() avg() min(),sum() select sum(age),max(age),min(age),avg(nvl(age,0)) from b_user 1       260     70      10      37.1428571428571 group by:如果前面定义了该字段名  则groupby必须也写上该字段 select name,pw

Oracle学习(四):组函数

1.知识点:可以对照下面的录屏进行阅读 SQL> --组函数类型:avg,count,max,min,sum SQL> --工资总额 SQL> select sum(sal) from emp; SQL> --员工人数 SQL> select count(*) from emp; SQL> --平均工资 SQL> select sum(sal)/count(*) 一, avg(sal) 二 from emp; SQL> --平均奖金的三种方式:二三方法一样,

Netsuite Formula > Oracle函数列表速查(PL/SQL单行函数和组函数详解).txt

PL/SQL单行函数和组函数详解 函数是一种有零个或多个参数并且有一个返回值的程序.在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句,函数主要分为两大类: 单行函数 组函数 本文将讨论如何利用单行函数以及使用规则. SQL中的单行函数 SQL和PL/SQL中自带很多类型的函数,有字符.数字.日期.转换.和混合型等多种函数用于处理单行数据,因此这些都可被统称为单行函数.这些函数均可用于SELECT,WHERE.ORDER BY等子句中,例如下面的例子中就包含了TO

oracle 组函数 max min等

一.组函数嵌套 ORACLE中规定,组函数嵌套只能嵌两层.其实多层嵌套并没有实际的用途,因此ORACLE没有提供组函数的多层嵌套.但是,单行函数是可以多层嵌套的. 二. 1.Oracle包含以下组函数  -AVG([DISTINCT|ALL]n) 返回平均值,忽略空值  -COUNT({*|[DISTINCT|ALL]}expr) 返回记录的数量,用*包含空值,否则不包含空值  -MAX([DISTINCT|ALL]expr)  返回最大值,忽略空值  -MIN([DISTINCT|ALL]ex

oracle:数值型函数,日期函数,转换函数,组函数,分组,排序,两表查询连接

--数值型函数 --四舍五入round(x,y)对x保留y为小数 --四舍五入数值 select round(23.225) from dual; --输出结果:24 --四舍五入(小数点后保留1位小数)数值 select round(23.652,1)from dual; --输出结果:23.7 --四舍五入(四舍五入到小数点前1位小数)数值 select round(25.2466,-1)from dual; --输出结果:30 -- 返回x按精度y截取后的值 --未四舍五入的值 selec

oracle学习篇五:组函数,分组统计

常用组函数: 1.ccount() 求出全部记录数. 2.max() 求出一组最大值 3.min() 求出一组最小值 4.avg() 求出平均值 5.sum() 求和 --1.统计员工数量: select count(empno) from emp; --2.求出最高薪资 select max(sal) from emp; --3.求出最低薪资 select min(sal) from emp; --4.求出平均薪资 select avg(sal) from emp; --查询各部门员工数量 s

oracle篇 之 组函数

一,常见组函数 1 . avg:求平均值,操作数值类型 2.sum:求和,操作数值类型 3.min:求最小值,操作任意类型 4.max:求最大值,操作任意类型 select avg(salary),sum(salary),min(salary),max(salary) from s_emp; 5.count:统计记录条数 select count(*) from s_emp; 原文地址:https://www.cnblogs.com/wskb/p/10758612.html

[转]Oracle DB 通过SQL 优化管理性能

? 将SQL 优化指导用于: – 确定使用资源最多的 SQL 语句 – 优化使用资源最多的 SQL 语句 ? 使用SQL 访问指导优化工作量 SQL 优化 SQL 优化进程 ? 确定没有很好地优化的SQL 语句. ? 优化各条语句. ? 优化整个应用程序. 一般情况下,效果最明显的优化工作是SQL 优化.没有很好地优化的SQL 会不必要地使用过多资源.这种低效率会降低可伸缩性.使用更多的OS 和数据库资源并增加响应时间.要对没有很好地优化的SQL 语句进行优化,必须先确定这些语句,然后再进行优化