分组查询

分组函数 :group by 要分组的列名 对数据集合处理的函数,可以处理多行数据

--5个分组函数

--count --计数函数,用于数量的统计

--sum 求和函数,对数据进行求和

--avg 求评平均,对一组数据求平均值

--min ,求最小值

--max ,求最大值

--分组函数,也叫统计函数,一般也做数据统计使用

例子:

--查询出10部门的最高工资和最低工资,平均工资;

select max(sal) ,min(sal) ,avg(sal) from emp where deptno=10;

--查询出入职日期在1981年6月后的员工数量,及平均工资

select count(*) ,avg(sal) from emp where to_char(hiredate,'yyyy-mm') >= '1981-06';

select count(*),avg(sal) from emp where hiredate>=to_date('1981-06','yyyy-mm');

--查询出公司每月的工资支出是多少

select sum(sal) from emp;

--公司员工普提工资上调50%,查询公司上调工资前后,每月工资支出

select sum(sal),sum(sal+(sal*0.5)) from emp;

1. select 语句的执行顺序:

from -> where -> group by -> having -> select - order by

– 1.通过FROM子句中找到需要查询的表;

– 2.通过WHERE子句进行非分组函数筛选判断;

– 3.通过GROUP BY子句完成分组操作;

– 4.通过HAVING子句完成组函数筛选判断;

– 5.通过SELECT子句选择显示的列或表达式及组函数;

– 6.通过ORDER BY子句进行排序操作。

例子:查询出入职日期在1981年2月后的员工信息,并按照部门进行分组,查询出每个部门的平均工资,并且平均工资在2600以上 ,按照平均工资进行倒序排序

select deptno, avg(sal) avgsal

from emp

where hiredate >= to_date('1981-02', 'yyyy-mm')

group by deptno

having avg(sal) > 2500

order by avg(sal) desc;

2. 联合主键

例子:按入职年份和部门进行统计,查询出各部门各入职年份的最高工资和最低工资,多列统计

理解:就是按照入职年份,部门进行分组

select to_char(hiredate,'yyyy'),deptno,max(sal),min(sal) from emp group by to_char(hiredate,'yyyy'),deptno;

3. 主函数中的distinct函数

1)DISTINCT会消除重复记录后再使用组函数

--理解distinct 关键与组函数的组合使用,用于何种场合

例如:统计员工所在的部门的数量

select count(deptno),count(distinct deptno) from emp;

2)遇到有null空值数据时,可以组合单行函数进行使用

例如:统计员工的平均奖金,没有奖金看为0

select count(*),count(comm),avg(comm),avg(nvl(comm,0)) from emp;

分组查询时注意:

1.带group by的分组查询,执行顺序是先分组group by 后查询 select,即,写在select 后面的列,必须是分组列,或 组函数

2.where条件中不能直接使用组函数

3.分组数据可以使用having字句进行过滤

4.分组列可以不在select子句中显示,select 列中要显示的列,必须出现在group by 分组中(在select 子句中非组函数列,都必须添加到group by 中)

5.having 是对group by分组后的数据进行过滤

6.组查询语句可以使用在:select ,having ,order by 。不能直接使用在

4. count统计函数

count(*) 和count(列名)

在count 统计中,不统计值为null的行

阿里巴巴的编码规范:在做行数统计时,要求使用count(*),以获得更高的效率或准确率

5.分组函数中空值处理

1).除了COUNT(*)之外,其它所有分组函数都会忽略列中的空值,然后再进行计算。

2 ). 在分组函数中使用NVL函数

– NVL 函数可以使分组函数强制包含含有空值的记录

3).遇到有null空值数据时,可以组合单行函数进行使用

例如:统计员工的平均奖金,没有奖金看为0

select count(*),count(comm),avg(comm),avg(nvl(comm,0)) from emp;

--补充说明

1). min 和 max 统计字符类型时,会根据字符的先后顺序进行统计

min和max统计时,如果数值为null,则不统计

MIN和MAX可以用于任何数据类型

例如:查询入职日期最早和最晚的日期

MIN(hiredate) 最早日期 , MAX(hiredate) 最晚日期

2). SUM和AVG函数都是只能够对数值类型的列或表达式操作。

例如:查询工资总和,平均工资

SUM(sal),AVG(sal) ,

3).COUNT函数的主要功能是返回满足条件的每组记录条数

COUNT(*):返回表中满足条件的行记录数

4). 组函数中DISTINCT:DISTINCT会消除重复记录后再使用组函数

其他三个函数是具有相同特性

select * from emp;

select min(job),max(job) from emp;

select min(ename),max(ename) from emp;

select min(comm),max(comm) = emp;

Oracle分组查询相关推荐

  1. oracle 分组 最新,Oracle分组查询

    Oracle分组查询 分组查询主要涉及到两个子句,分别是:group by和having. group by 1.取得每个工作岗位的工资合计,要求显示岗位名称和工资合计 select job, sum ...

  2. oracle部门分组员工平均工资,oracle分组查询

    分组函数 在分组函数中,如果有一个查找项分组,其他项必须也分组,比如下面的语句会报错,因为sal分组了,而ename没有分组: 1.显示工资最高的员工: 2.显示所有员工的平均工资: 2.1使用系统函 ...

  3. oracle分组查询取第一条数据,160804、oracle查询:取出每组中的第一条记录

    oracle查询:取出每组中的第一条记录 按type字段分组,code排序,取出每组中的第一条记录 方法一: select type,min(code) from group_info group b ...

  4. oracle分组查询取第一条

    在 Oracle 中,可以使用 row_number() 函数来实现分组取第一条记录的功能.例如,假设有一张表 mytable,其中有两列 col1 和 col2,并且想要按照 col1 分组,并取出 ...

  5. oracle分组查询最新的一条

    相对于group,partition by 能够查询出来除了分组以外的其他字段,但是没有过滤,加上row_number()函数就可以过滤出来最新的一条 SELECT* FROM(SELECTSID,f ...

  6. oracle多条件分组查询数量_ORACLE分组查询和统计等

    select flow_id,rw from (select t.flow_id ,rownum as rw from apex_030200.wwv_flow_list_templates t)  ...

  7. oracle分组聚合查询,Oracle中分组查询group by用法规则解析

    本篇文章小编给大家分享一下Oracle中分组查询group by用法规则解析,文章介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. Oracle中group by ...

  8. oracle每小时分组查询,Oracle 天内按小时分组查询有关问题

    Oracle 天内按小时分组查询问题 本帖最后由 hao123yao 于 2013-03-08 11:30:56 编辑 表名c_data_01.表结构: uuid   c_id      c_time ...

  9. oracle数据库分组查询group by

    1.普通分组group by查询 SELECT "CITY_GDDWBM" AS "citygddwbm", "AREA_GDDWBM" A ...

最新文章

  1. WinDbg 脚本实例,可以显示 SSDT
  2. Cannot connect to database because the database client
  3. 京东发布双11首份战报:手机品类18秒销量突破万台
  4. 【莫比乌斯反演】[HYSBZ/BZOJ2693]jzptab
  5. VC Ping IP的类
  6. Mongodb高级查询【二】
  7. Windows 11 Manager(win11优化大师)官方中文版V1.0.0 | windows11优化软件下载
  8. [Win10] 解决 Office 安装后图标空白的问题
  9. 业务系统+电子签章开放平台,快速构建个性化的电子签署应用
  10. 自用计算机一套送东西,购买笔记本电脑别忘记索要赠品
  11. Android设置RecyclerView的Header和Footer
  12. Python中通过property实现属性的修改、删除、查看
  13. 数学建模之规划1——线性规划
  14. 黑金AX7020 PYNQ入门
  15. 最大公约数-最小公倍数
  16. 开发指南专题十五 JEECG微云快速开发平台EXCEL导入导出
  17. 【调剂】北方民族大学计算机科学与工程学院2021年考研调剂信息
  18. 网管工具——Untangle
  19. 二分法与黄金分割法matlab代码
  20. Unicode字符集和多字节字符集关系(一)

热门文章

  1. 解密.[support2022@cock.li].faust后缀勒索病毒加密的文件:拯救您的企业数据的完整指南!
  2. 全球邮箱排名,好用的中国企业邮箱品牌
  3. 微信小程序自定义头部标题导航栏
  4. 经典微信营销案例排行榜
  5. 路由模式 - direct
  6. 又是一年开学季,看品牌营销都有什么“大招”?快来抓住年轻一代的心!
  7. 火云开发课堂 - 《使用Cocos2d-x 开发3D游戏》系列 第一节:3D时代来临!
  8. QT操作Sqlite数据库修改字段名称和删除字段
  9. 提升机器学习训练数据多样性,增加医学应用可训练数据量
  10. 单链表逆置C语言编程实现