当前位置: 首页 > web >正文

Oracle基础知识(二)

目录

1.聚合函数

2.COUNT(1)&COUNT(*)&COUNT(字段)区别(面试常问)

3.分组聚合——group by

4.去重:DISTINCT 、GROUP BY

5.聚合函数的过滤HAVING

6.oracle中having与where的区别  (面试常问)

7.ROUND与TRUNC函数

8.ROLLUP上卷与CUBE各维度汇总

9.子查询

单行子查询案例:

多行子查询案例:


1.聚合函数

聚合函数:可以同时对多行进行操作,并返回一个结果

聚合函数有:

(1)avg(x):返回x的平均值;

(2)count(x):查询返回的行数;

(3)max(x):返回x的最大值;

(4)min(x):返回x的最小值;

(5)median(x):返回x的中位数;

(6)sum(x):返回x的和;

2.COUNT(1)&COUNT(*)&COUNT(字段)区别(面试常问)

COUNT(1)&COUNT(*) 都是统计行数 得到的结果都是一样的

但是 COUNT(1) 比 COUNT(*) 性能要好一点,因为COUNT(*)需要先得到表的字段信息然后再计数。

而COUNT(1)相当于新增一列,然后对该列进行直接计数。

COUNT(字段)是统计该字段非空的行数(不把为空的行统计进去)

3.分组聚合——group by

分组的情况下,group by后面有什么字段,select 才可以查对应的字段

4.去重:DISTINCT 、GROUP BY

特性DISTINCTGROUP BY
主要用途去除查询结果中的重复行对数据进行分组并允许使用聚合函数
是否可与聚合函数一起使用不可以可以
对输出的影响返回去重后的结果集根据分组条件返回每组的汇总信息
性能考虑对于简单去重操作较为直接有效更适合需要汇总、统计等复杂查询
示例SELECT DISTINCT department_id FROM employees;SELECT department_id, COUNT(*) FROM employees GROUP BY department_id;

5.聚合函数的过滤HAVING

HAVING必须和group by 配合使用,且having必须在group by后面

HAVING 关键字和 WHERE 关键字都可以用来过滤数据,

且 HAVING 支持 WHERE 关键字中所有的操作符和语法。

注意:使用聚合函数之前尽量先用where进行过滤,先过滤再分组

           避免查*,用到哪些字段就查询哪些字段          

6.oracle中having与where的区别  (面试常问)

  1. where 不能放在 group by 的后面
  2. HAVING 是跟 GROUP BY 连在一起用的,放在 GROUP BY 后面,此时的作用相当于WHERE
  3. WHERE 后面的条件中不能有聚合函数,比如 SUM()、AVG()等,而 HAVING 可以

示例1:找出部门平均薪资大于1000 并且 部门编号不为10的 部门和部门平均薪资

select deptno,avg(sal) avg_sal
from emp
where deptno<>10
group by deptno
having avg(sal)>1000;

7.ROUND与TRUNC函数

ROUND(x,y)--四舍五入至y位小数

ROUND(x)--四舍五入至整数

TRUNC(x,y)--根据指定的小数位数截断数值(不进行四舍五入)。

8.ROLLUP上卷与CUBE各维度汇总

特性ROLLUP(job, deptno)CUBE(job, deptno)
汇总层级层次化汇总所有可能组合
包含哪些分组(job, deptno), (job), ()(job, deptno), (job), (deptno), ()
是否包含部门小计❌ 不包含只按部门的小计✅ 包含
结果行数较少更多

9.子查询

--单行子查询,返回的结果里只有一条数据                SELECT COUNT(1) FROM EMP;

--多行子查询,返回的结果集里有多条数据                SELECT ENAME FROM EMP; 

单行子查询案例:

示例:查询EMP,找出哪些人薪资比SCOTT用户高

SELECT SAL
FROM EMP
WHERE ENAME = 'SCOTT';
--
SELECT ENAME
FROM EMP
WHERE SAL > 3000;
--
SELECT ENAME
FROM EMP
WHERE SAL > (SELECT SALFROM EMPWHERE ENAME = 'SCOTT');

多行子查询案例:

示例:在10 和 20 部门中找出工作岗位和30部门中存在的任意一个岗位相同的员工的信息

SELECT DISTINCT JOB
FROM EMP
WHERE DEPTNO = 30;SELECT *
FROM EMP
WHERE DEPTNO IN (10, 20)AND JOB IN (SELECT DISTINCT JOBFROM EMPWHERE DEPTNO = 30);
http://www.xdnf.cn/news/7806.html

相关文章:

  • Open3D 半径滤波器
  • Enhanced RTMP H.265(HEVC)技术规格解析:流媒体协议的新突破
  • labelme进行关键点标注并转换为yolo格式
  • Vue3 与 Vue2 区别
  • Vue大数据量前端性能优化策略
  • Linux 文件(3)
  • 计算机网络--第一章(下)
  • 【Java】封装在 Java 中是怎样实现的?
  • 面经总目录——持续更新中
  • 数据库基础
  • 写实数字人在展厅的应用:探索无限可能
  • Rocketmq刷盘机制和复制机制区别及关系
  • 超长文本注意力机制如何突破传统 O(n²) 瓶颈
  • 【Redis】哈希表结构
  • Baklib构建AI就绪型知识中台实践
  • 内网穿透:轻松实现外网访问本地服务
  • 至此(day1-day4)代码详解(ai辅助整理)
  • IEEEtran中文献中的作者大于3个时,用et al.省略
  • 院校机试刷题第八天:B3846闰年求和、P1012字母异位词分组
  • 使用亮数据代理IP+Python爬虫批量爬取招聘信息训练面试类AI智能体(手把手教学版)
  • 算法第24天|93.复原IP地址、 78.子集、 90.子集II
  • Java 10IO流
  • DockerHub被封禁,怎么将镜像传到国内?一种简单合规的镜像同步到国内方案[最佳实践]
  • KLEC--基于知识学习的演化计算算法
  • 硬盘健康检测与性能测试的实践指南
  • 【AI助手】提升开发效率:Continue配置自定义提示词模板及规则
  • 白皮精读:109页数据资源体系构建白皮书【附全文阅读】
  • 汉语词汇的神奇拼图:关联性的魅力
  • AI大模型应对挑战,使用winform实现小球在旋转五边形内的舞蹈
  • Java数组列表 - ArrayList