Oracle |
您所在的位置:网站首页 › 怎么计算组数的个数 › Oracle |
上一篇👉:Oracle-----SQL-1999语法&数据集合操作 总目录👉震惊!史上最菜的Oracle 11g教程(大佬勿进) 文章目录 1、统计函数(分组函数)1.1 范例1:验证各个函数1.2 范例2:统计出公司的平均雇佣年限1.3 范例3:求出最早和最晚的雇佣日期1.4 范例4:统计bonus表1.5 范例5:统计bonus表 2、分组统计2.1 范例1:根据部门编号分组,查询每个部门的编号、人数、平均工资2.2 范例2:根据职位分组,统计出每个职位的人数,最低工资与最高工资🚴大家好!我是近视的脚踏实地,这篇文章主要是来学习Oracle的统计函数以及分组统计 唯有行动 才能解除你所有的不安 1、统计函数(分组函数)之前学习过一个count()函数,这个函数的主要作用是统计一张数据表之中的数据量的个数。但是与它功能类似的常用函数一共有五个:Oracle统一还有很多,这5个函数所有的数据库都包含 ※统计个数:count(),根据表中的实际数据量返回结果; ※求和:sum(),是针对于数字的统计 ※平均值:avg(),是针对于数字的统计 ※最小值:min(),各种数据类型都支持 ※最大值:max(),各种数据类型都支持 1.1 范例1:验证各个函数范例1: 验证各个函数 select count(*) 人数,avg(sal) 员工平均工资,sum(sal) 每月总支出, max(sal) 最高工资, min(sal) 最低工资 from emp;
范例2: 统计出公司的平均雇佣年限 select avg(months_between(sysdate,hiredate)/12) from emp;范例3: 求出最早和最晚的雇佣日期(找到公司最早雇佣的雇员,以及公司最近雇佣的雇员日期) select max(hiredate) 最晚, min(hiredate) 最早 from emp;范例4: 统计bonus表 以上几个操作函数,在表中没有数据的时候,只有count()函数会返回结果,其他都是null 我们知道表bonus是没有任何数据的,可以看到里边有四个字段👇:
实际上针对于count()函数有三种使用形式: ※ count(*): 可以准确的返回表中的全部记录数 ※ count(字段): 统计不为null 的所有数据量 ※ count(distinct 字段): 消除重复数据之后的结果 首先来回忆一下emp表中有14条记录 范例5: 统计查询一 select count(*),count(empno) from emp;
什么情况下可能分组? 例如:部门之间进行拔河比赛,那么分组的依据:部门,每个雇员都有相同的部门编号; 例如:上厕所,男女各一边,实际上这也是一个分组。 那么也就证明一点:分组的前提是存在有重复。但是允许单独一行记录进行分组。 如果要想进行分组则应该使用group by子句完成,那么此时的SQL语法结构变为如下形式👇: 【④选出所需要的数据列】select [distinct] * | 分组列 [别名],分组列 [别名],分组列 [别名]… 【①确定数据来源(行与列的集合)】from 表名称 [别名],表名称 [别名]… 【②筛选数据行】[where 限定条件(s)] 【③针对于筛选的行分组】[group by 分组字段,分组字段,分组字段…] 【⑤数据排序】[order by 排序字段 [ASC | DESC],排序字段 [ASC | DESC],…] 2.1 范例1:根据部门编号分组,查询每个部门的编号、人数、平均工资范例1: 根据部门编号分组,查询每个部门的编号、人数、平均工资 select deptno,count(*),avg(sal) from emp group by deptno;范例2: 根据职位分组,统计出每个职位的人数,最低工资与最高工资 select job,count(*),min(sal),max(sal) from emp group by job;
![]() ![]() ※如果查询中使用了group by子句,select子句中只允许出现分组字段、统计函数,其他任何字段都不允许出现 错误的代码正确的代码select ename,job,count(*) from emp group by job;![]() ![]() ※ 统计函数允许嵌套,但是嵌套之后的select子句里面只允许出现嵌套函数,而不允许出现任何字段,包括分组字段。 错误的代码正确的代码select deptno,max(avg(sal)) from emp group by deptno;![]() ![]() 其实第三种方式的原理就是首先如果先用**select deptno,avg(sal) from emp group by deptno;**语句查询出来的是一张表了 然后接着从查询的这张表再次使用统计函数查询出平均工资最高的,即语句select max(avg(sal)) from emp group by deptno; 此时就回到了第一个概念,此时查询平均工资最高的的这个表不需要在进行分组了,直接查就好了,所以是不允许再出现任何字段,包括第一步的分组字段deptno 下一篇👉Oracle-----多表查询与分组统计&having子句&分组案例 本篇博客到这就完啦,非常感谢您的阅读🙏,如果对您有帮助,可以帮忙点个赞或者来波关注鼓励一下喔😬 ,嘿嘿👀 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |