Oracle操作总结

简介: 聚合函数: count sum max min avg count返回的结果集中行的数目 sum max min avg顾名思义。但是要注意聚合函数强调的是"结果集中……",强调了 现在进行的操作对象是结果集 注意NULL不参与聚合函数的预算,要想其参加运算那么要将其转换为非空的值 分组: 在一个查询中需要进行多次统计就需要就必须使用分组 where是分组前过滤,过滤的是原始数据。


聚合函数:
count sum max min avg
count返回的结果集中行的数目
sum max min avg顾名思义。但是要注意聚合函数强调的是"结果集中……",强调了
现在进行的操作对象是结果集
注意NULL不参与聚合函数的预算,要想其参加运算那么要将其转换为非空的值


分组:
在一个查询中需要进行多次统计就需要就必须使用分组

where是分组前过滤,过滤的是原始数据。这样就过滤掉了不必要的数据提高了效率

having是分组后过滤,过滤的是统计结果

先要弄明白:分组,分组 什么才叫一组——前提条件当然是相同的才叫一组

比如:班级同学分两组,按照性别来分。只有都是男性才会在同一组

老师的笔记说得很清楚:分组函数运算每一组记录,每一组返回一个结果
比如:select deptno,job,avg(sal) from emp group by deptno,job 把deptno,job相同的(其余字段不用多考虑,就以这两个为关键)算作一组
所以最后Oracle返回的是九行数据,即九个结果

注意按照某些字段分组后,已经是"组"的概念了,个体的特性已经消失了。
按照什么分组,那么当然可以从结果集中得到这些字段!!!比如按照城市分组,就可以得到每一组的城市名。
除了分组字段以外的字段,其余的字段只可以参与聚合运算(count sum max min avg)——当然,前提是可以使用具体的聚合
函数,比如不可以avg(name),因为那么根本就不是数字!!!!!!!!!!

再次强调:比如(在这里我们假设没有按照comm分组)员工编号是"9527"的comm(提成),但是可以得到平均的comm.
因为现在是以"组"的概念存在的。已经不存在个体了。

核心思想:分组以后个体的概念消失了,是"组"的概念。
比如这里有学生的 姓名,年纪,性别,身高
按照身高分组——相同的身高在一个组。那么当然可以select 身高,其余的只可以用聚合函数了
按照性别分组——相同的性别放在一个组。那么当然可以select 性别,其余的只可以用聚合函数了

还有一个很值得注意:要是涉及到聚合,分组的时候order by的字段也只能是分组里的字段!!!!!!!!!!!!!!

只要涉及到聚合函数就要想到分组!!!!!!!!!!!
要是前面出现了聚合函数,且后面没有涉及到group by 那么这是最特殊的分组。在select里任意一个具体字段都不可以使用。
只可以使用聚合函数


这里有一堆这两天敲的实验数据:

select * from emp
select job,count(*) from emp group by job having count(*)>3
select job "工种" from emp where job='CLERK'--正确的
select job "工种",count(job) "此工种人数" from emp group by job--正确的
select count(*) "此工种人数" from emp where job='CLERK'--正确的
select job "工种",count(*) "此工种人数" from emp where job='CLERK'--错误的
select job "工种",sum(comm) from emp group by job--正确的
select job "工种",avg(comm) from emp group by job--正确的
select job "工种",max(comm) from emp group by job--正确的
select job "工种",min(comm) from emp group by job--正确的
select job "工种",sal "工资",sum(comm) from emp group by job--错误的
select job "工种",avg(sal) "平均工资",sum(comm) from emp group by job--正确的
select job "工种",max(sal) "最高工资",sum(comm) from emp group by job--正确的
select job "工种",max(mgr) "管理者为",sum(comm) from emp group by job--正确的
select job "工种",sum(mgr) "测试",sum(comm) from emp group by job--正确的
select job "工种",max(ename) "ename最大值",sum(comm) from emp group by job--正确的

select job "工种",count(mgr) "测试",sum(comm) from emp group by job--正确的
select job "工种",count(ename) "测试",sum(comm) from emp group by job--正确的
select job "工种",count(hiredate) "测试",sum(comm) from emp group by job--正确的
--关于分组后的order
select job "工种",max(sal) "最高工资",sum(comm) from emp group by job order by job desc--正确的
select job "工种",max(sal) "最高工资",sum(comm) from emp group by job order by comm desc--错误的
select job "工种",max(sal) "最高工资",comm "提成",sum(comm) from emp group by job,comm order by comm desc--正确的

select * from emp
--1clerk null
--2sale  300
--3sale  500
--4man   null
--5sale  1400
--6man   null
--7man   null
--8ana   null
--9pre   null
--10sal   0
--11clerk null
--12clerk null

 

 

 

 

 

 

 

相关文章
|
8月前
|
Oracle 关系型数据库 Java
实时计算 Flink版操作报错之读取Oracle数据库时遇到找不到驱动,是什么原因
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
实时计算 Flink版操作报错之读取Oracle数据库时遇到找不到驱动,是什么原因
|
8月前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版操作报错之遇到报错 Oracle 19C,如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
8月前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版操作报错合集之采集oracle的时候报ORA-65040:不允许从可插入数据库内部执行该操作如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
309 3
|
8月前
|
DataWorks Oracle 关系型数据库
DataWorks操作报错合集之尝试从Oracle数据库同步数据到TDSQL的PG版本,并遇到了与RAW字段相关的语法错误,该怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
110 0
|
6月前
|
Oracle 关系型数据库 数据库
|
6月前
|
分布式计算 Oracle 大数据
MaxCompute产品使用合集之没有数据源,只是将批量状态和时间写入Oracle表里,该如何操作
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
8月前
|
SQL Oracle 关系型数据库
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作
161 0
|
7月前
|
SQL DataWorks Oracle
DataWorks产品使用合集之datax解析oracle增量log日志该如何操作
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
69 0
|
8月前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版操作报错合集之写Oracle时出现的缺失等号错误如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
94 9
|
8月前
|
消息中间件 Oracle 关系型数据库
实时计算 Flink版操作报错之同步Oracle时出现主题为空的报错该怎么解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。

相关实验场景

更多

推荐镜像

更多