笛卡儿积的定义是什么(oracle 笛卡尔积的深度应用以及优缺点.)
910次浏览 发布时间:2024-04-18 16:34:18
第一:
首先要知道笛卡尔积的定义:
笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尔积,又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员 。
第二:实际应用:
举例:
按照雇员的入职时间升序排序,计算所有雇员入职年月所发出的总工资。
解答:
a : 先对入职月份(hiredate)做处理。并做程临时表 tmp_t1 。
create table tmp_t1 as
SELECT empno, ename, job, mgr, hiredate, hiredate, sal, comm,
deptno, sex
FROM emp order by hiredate ;
b : 对临时表tmp_t1 使用笛卡尔积。
select * from
tmp_t1 t1,tmp_t1 t2;
结果如下图1:

图1
从查询结果中看,结果数据确实是产生了笛卡尔积。那么顺着题目联想,怎么利用笛卡尔积来求出 【每个入职年月,所有雇员所发出的总工资】。步骤如下:
c :对b 步骤中产生的笛卡尔积,进一步筛选t1 表中的雇员入职时间>=t2 (WHERE t1.hiredate >= t2.hiredate ) 表的雇员入职时间 :
SELECT t1.* ,t2.*
FROM tmp_t1 t1, tmp_t1 t2
WHERE t1.hiredate >= t2.hiredate order by t1.HIREDATE;
从图2 中可以看出:经过WHERE t1.hiredate >= t2.hiredate 对结果的数据筛选后, 会产生下面数据 。(详细观察结果数据)

图2
d : 出结果:
SELECT t1.*, SUM(t2.sal) sal_sum
FROM tmp_t1 t1, tmp_t1 t2
WHERE t1.hiredate >= t2.hiredate
GROUP BY t1.empno, t1.ename, t1.job, t1.mgr, t1.hiredate, t1.sal, t1.comm,
t1.deptno, t1.sex。

图3
优点 : 此方法可以加深对笛卡尔积的理解与应用。
缺点: 处理小批量数据用此方法还可以,如果数据大的话,此方法对数据处理效率的影响还是很大的。
相关文章
-
激光美白嫩肤效果怎么样?明显吗
2023-10-18 18:09:09 -
电脑系统坏了怎么修复?4招解决
2023-10-18 18:03:36 -
前脚掌疼是怎么回事(为什么会脚底板痛?或与这7因素有关,八个方法可有效缓解)
2023-10-18 18:02:53 -
油性皮肤如何美白最快?很多人都没搞懂,难怪用大牌也是浪费
2023-10-18 17:58:54 -
如何自制美白面膜介绍7款美白面膜的自制做法
2023-10-18 17:57:27 -
电脑选购——电脑哪种品牌比较好
2023-10-18 17:56:52