大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说oracle中分析函数和集合运算的详解是什么_集合函数的概念,希望您对编程的造诣更进一步.
一.分析函数
- RANK 相同的值排名相同,排名跳跃
- DENSE_RANK 相同的值排名相同,排名连续
- ROW_NUMBER 返回连续的排名,无论值是否相等
下图为三种排名方式的举例
–以下三个分析函数可以用于排名使用。
(1)RANK 相同的值排名相同,排名跳跃 (例如1,2,2,2,下一位就变5 是直接跳跃)
--需求:对T_ACCOUNT表的usenum字段进行排序,相同的值排名相同,排名跳跃
select rank() over(order by ac.usenum desc) ,ac.usenum from t_account ac;
代码100分
代码100分--(2)DENSE_RANK 相同的值排名相同,排名连续(相同的同名,不同的顺序排下去 1,2,2,3,3,4)
--需求:对T_ACCOUNT表的usenum字段进行排序,相同的值排名相同,排名连续
select dense_rank() over(order by ac.usenum desc),ac.usenum from t_account ac;
--(3)ROW_NUMBER 返回连续的排名,无论值是否相等 (直接排序顺序,1,2,3,4,5)
--需求:对T_ACCOUNT表的usenum字段进行排序,返回连续的排名,无论值是否相等
select row_number() over(order by ac.usenum desc),ac.usenum from t_account ac;
--用row_number()分析函数实现的分页查询相对三层嵌套子查询要简单的多(了解):
select * from (
select row_number() over(order by ac.usenum desc)rownumber,ac.usenum from t_account ac
)where rownumber>10 and rownumber<=20;
二. 集合运算
集合运算:将两个结果集合并成一个结果集
–(一)什么是集合运算 : 将两个结果集合并成一个结果集
- –UNION ALL(并集):不去重 返回各个查询的所有记录,包括重复记录。
- –UNION(并集):去重 返回各个查询的所有记录,不包括重复记录。
- –INTERSECT(交集):获得公共部分,返回两个查询共有的记录。
- –MINUS(差集);第一条减去公共部分,返回第一个查询检索出的记录减去第二个查询检索出的记录之后剩余的记录。
举例实用:
代码100分
--准备数据
--1.查询id小于7
select * from t_owners ow where ow.id<=7;
--2 查询iD 大于5
select * from t_owners ow where ow.id >=5;
--1.并集 ,允许重复 UNION ALL
select * from t_owners ow where ow.id<=7
union all
select * from t_owners ow where ow.id >=5;
--2.并集,去重 union
select * from t_owners ow where ow.id<=7
union
select * from t_owners ow where ow.id >=5;
--3.交集 , 共同部分 intersect
select * from t_owners ow where ow.id<=7
intersect
select * from t_owners ow where ow.id >=5;
--4.差集 ,第一条减去共同部分
select * from t_owners ow where ow.id<=7
minus
select * from t_owners ow where ow.id >=5;
注意点:集合运算,允许查不同的表,只要这两张表的字段数量和字段类型一致就OK了(不要求字段名一致)
看完恭喜你,又知道了一点点!!!
你知道的越多,不知道的越多!
~感谢志同道合的你阅读, 你的支持是我学习的最大动力 ! 加油 ,陌生人一起努力,共勉!!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/8129.html