首页 > 其他分享 >14.分组函数

14.分组函数

时间:2023-02-19 16:22:16浏览次数:38  
标签:02 00 14 分组 department id select 函数

1.分组函数

分组函数是操作一个分组的结果集,将行分组,按照组产生一个结果集,常用的分组函数有:avg,count,max,min,stddev,sum,variance

hr@ORCLPDB01 2023-02-19 15:58:03> select avg(salary),max(salary),min(salary),sum(salary)
  2  from employees
  3  where job_id like '%REP%';

AVG(SALARY) MAX(SALARY) MIN(SALARY) SUM(SALARY)
----------- ----------- ----------- -----------
 8272.72727	  11500        6000	 273000

Elapsed: 00:00:00.01

--对数字,字符,日期类型的可以使用min,max
hr@ORCLPDB01 2023-02-19 15:58:51> select min(hire_date),max(hire_date)
  2  from employees;

MIN(HIRE_DATE)	    MAX(HIRE_DATE)
------------------- -------------------
2001-01-13 00:00:00 2008-04-21 00:00:00

Elapsed: 00:00:00.00

--count函数
hr@ORCLPDB01 2023-02-19 16:01:29> select count(*)
     from employees
     where department_id = 50

  COUNT(*)
----------
	45

Elapsed: 00:00:00.01
hr@ORCLPDB01 2023-02-19 16:01:31> select count(commission_pct) from employees where department_id = 80;

COUNT(COMMISSION_PCT)
---------------------
		   34

distinct关键字

--返回非空唯一总行数
--显示唯一部门数量
hr@ORCLPDB01 2023-02-19 16:02:54> select count(distinct department_id) from employees ;

COUNT(DISTINCTDEPARTMENT_ID)
----------------------------
			  11

空值

--默认分组忽略空值
--nvl可以强制分组函数处理空值
hr@ORCLPDB01 2023-02-19 16:04:25> select avg(commission_pct) from employees;

AVG(COMMISSION_PCT)
-------------------
	 .222857143

Elapsed: 00:00:00.01
hr@ORCLPDB01 2023-02-19 16:05:48> select avg(nvl(commission_pct,0)) from employees;

AVG(NVL(COMMISSION_PCT,0))
--------------------------
		.072897196

Elapsed: 00:00:00.01

2.创建分组数据库

hr@ORCLPDB01 2023-02-19 16:06:06> select department_id,avg(salary)
  2  from employees
  3  group by department_id;

DEPARTMENT_ID AVG(SALARY)
------------- -----------
	   50  3475.55556
	   40	     6500
	  110	    10154
	   90  19333.3333
	   30	     4150
	   70	    10000
		     7000
	   10	     4400
	   20	     9500
	   60	     5760
	  100  8601.33333
	   80  8955.88235

12 rows selected.

Elapsed: 00:00:00.00

--分组列可以不出现在select列表中
hr@ORCLPDB01 2023-02-19 16:08:57> r
  1  select avg(salary)
  2  from employees
  3* group by department_id

AVG(SALARY)
-----------
 3475.55556
       6500
      10154
 19333.3333
       4150
      10000
       7000
       4400
       9500
       5760
 8601.33333
 8955.88235

12 rows selected.

Elapsed: 00:00:00.01

 多列分组例子

hr@ORCLPDB01 2023-02-19 16:08:59> select department_id,job_id,sum(salary)
  2  from employees
  3  where department_id > 40
  4  group by department_id,job_id
  5  order by department_id;

DEPARTMENT_ID JOB_ID	 SUM(SALARY)
------------- ---------- -----------
	   50 SH_CLERK	       64300
	   50 ST_CLERK	       55700
	   50 ST_MAN	       36400
	   60 IT_PROG	       28800
	   70 PR_REP	       10000
	   80 SA_MAN	       61000
	   80 SA_REP	      243500
	   90 AD_PRES	       24000
	   90 AD_VP	       34000
	  100 FI_ACCOUNT       39600
	  100 FI_MGR	       12008
	  110 AC_ACCOUNT	8300
	  110 AC_MGR	       12008

13 rows selected.

Elapsed: 00:00:00.01

注意:

      1.限制分组函数结果不能用where,必须用having

      2.where子句中不能使用分组函数

3.hangving语法

--行被分组
--分组函数已使用
--匹配having的结果被显示
hr@ORCLPDB01 2023-02-19 16:11:12> select department_id , max(salary) 
  2  from employees
  3  group by department_id 
  4  having max(salary) > 10000;

DEPARTMENT_ID MAX(SALARY)
------------- -----------
	  110	    12008
	   90	    24000
	   30	    11000
	   20	    13000
	  100	    12008
	   80	    14000

6 rows selected.

Elapsed: 00:00:00.00

嵌套函数

hr@ORCLPDB01 2023-02-19 16:16:39> select max(avg(salary)) from employees group by department_id;

MAX(AVG(SALARY))
----------------
      19333.3333

Elapsed: 00:00:00.00

 

标签:02,00,14,分组,department,id,select,函数
From: https://www.cnblogs.com/yuanzijian/p/17134942.html

相关文章

  • 对fork函数的进一步分析
       在fork之前的printf和write函数只会父进程调用一次,子进程不会调用,因为那时子进程还没有创建出来。当fork时,子进程被创建,程序只会往下顺序执行,但是前面父进程分配......
  • golang 单测运行单个函数、文件、跳过文件命令
    1、单测运行1.2运行某个单测函数gotest-v-run=xxx,xxx是函数名,支持正则表达式;参数-v说明需要打印详情提示Golang单测是根据前缀匹配来执行的,gotest-v-run=......
  • 13.转换函数
    1.隐式与显示数据转换--在表达式中Oracle服务器能自动转换--fromvarchar2orchartonumber--fromvarchar2orchartodate--fromnumbertovarchar2......
  • jstl 函数
         下面是JSTL中自带的方法列表以及其描述函数名函数说明使用举例fn:contains判断字符串是否包含另外一个字符串<c:iftest="${fn:contains(name,searchString)}">......
  • 12.单行函数
    1.单行函数--使用函数是为了操作数据--将输入的变量处理,每行返回一个结果--处理返回的每一行--一行返回一个结果--可以转化数据类型--能嵌套使用--传入的变量可以......
  • Qt音视频开发14-音视频文件保存基类的设计
    一、前言视频综合应用示例,包括了多种内核,在保存文件这个功能上,需要一个通用的文件保存基类AbstractSaveThread,这个基类定义了是否打印线程消息标志位、直接写入还是排队写......
  • Django Rest Frame work 如何使用serializers序列化函数新手教程
    DjangoRestFramework如何使用serializers序列化   DjangoRestFramework提供了serializers模块,用于序列化和反序列化模型实例以及原生数据类型......
  • serializers序列化函数简单入门
    1.创建Django项目和应用程序首先,我们需要创建一个Django项目和一个Django应用程序。如果你已经有了Django项目和应用程序,请跳过这一步。$django-adminstartprojectm......
  • 读Java实战(第二版)笔记14_CompletableFuture及反应式编程背后的概念
    1. 潮流1.1. 与应用程序运行的硬件平台相关1.1.1. 编写能充分利用多核处理器能力的软件1.2. 与应用程序的结构相关1.2.1. 反映了互联网应用对可用性日益增长的需......
  • Win10使用远程桌面连接访问服务器,提示 出现身份验证错误,要求的函数不受支持
      解决方案:1.win+R打开运行窗口,输入gpedit.msc   2.依次展开计算机配置=>管理模板=>系统=>凭据分配   3.双击加密数据库修正   ......