oracle数据库SQL开发之分组函数

本文介绍了Oracle数据库中SQL开发的重点——分组函数,包括MIN、MAX、SUM、AVG和COUNT的用法,并详细讲解了GROUP BY子句用于指定分组依据,HAVING子句用于过滤分组后的结果。同时,概述了SQL语句的执行顺序,从FROM、WHERE、GROUP BY、HAVING到SELECT和ORDER BY。

一、分组函数(最多两层)

– 分组函数是对表中一组记录进行操作,每组只返回一个结果,即首先要对表记录进行分组,然后再进行操作汇总,每组返回一个结果,分组时可能是整个表分为一组,也可能根据条件分成多组。
 
– 分组函数常用到以下五个函数:

1.– MINMAX函数主要是返回每组的最小值和最大值。
• MIN
• MAX
–查询入职日期最早和最晚的

SQL> SELECT MIN(hiredate), MAX(hiredate)
                     FROM emp;

2.-SUMAVG函数分别返回每组的总和及平均值。
• SUM
• AVG 自动忽略null所在行 所以 select avg(nvl(comm,0)) from emp;
–查询职位以SALES开头的所有员工平均工资、最低工资、最高工资、工资和

SQL> SELECT AVG(sal), MAX(sal),
                     MIN(sal), SUM(sal)
                     FROM emp
                     WHERE job LIKE 'SALES%';

3.COUNT函数的主要功能是返回满足条件的每组记录条数。 使用占位符能提高搜索效率。
在这里插入图片描述

二、group by子句

GROUP BY 所指定的列并不是必须出现在select 列表中 如果在select子句查询中使用了组函数,任何不在组函数中的列或表达式都必须包含在group by子句

–查询每个部门每个岗位的工资总和。

SQL> SELECT deptno, job, sum(sal)
    FROM emp
    GROUP BY deptno, job;

三、having 子句 (放在group by后面)

		• 不能在 where子句中限制组
		• 可以通过 having 子句限制组

1.使用 having子句限制组
记录已经分组.(所以放在group by子句之后)
– 使用过组函数.
– 与 having 子句匹配的结果才输出

-查询每个部门最高工资大于2900的部门编号,最高工资

SQL> SELECT deptno, max(sal)
          FROM emp
  	      GROUP BY deptno
          HAVING max(sal)>2900;

 

 

 

四、SQL语句执行过程

• SELECT语句执行过程:
– 1.通过from子句中找到需要查询的表;
– 2.通过where子句进行非分组函数筛选判断;
– 3.通过group by子句完成分组操作;
– 4.通过having子句完成组函数筛选判断;
– 5.通过select子句选择显示的列或表达式及组函数;
– 6.通过order by子句进行排序操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值