Dan*_*Dan 73
假设你有一个关系,A,有一个属性,'a'(减少一个更复杂的关系,这是关系代数中的一个简单的任务,我相信你到目前为止),所以现在你想找到最大值A中的值
一种方法是找到A与自身的交叉产品,确保重命名为'a',以便新关系具有不同名称的属性.例如:
(将'a'重命名为'a1')X(将'a'重命名为'a2')
现在选择'a1'<'a2',结果关系将包含除最大值之外的所有值.要获得最大值,只需找到原始关系之间的差异:
(A x A) - (select 'a1' < 'a2') ((rename 'a' as 'a1')(A) x (rename 'a' as 'a2')(A))
Run Code Online (Sandbox Code Playgroud)
然后使用project
运算符减少到单个列,正如Tobi Lehman在下面的评论中所建议的那样.
用关系代数表示法写这个(如果我没记错的话).请注意,最终重命名(即ρ)最终只是一个与原始关系同名的属性:
ρa / a1(πa1((A×A) - σa1<a2(ρa1/ a(A)xρa2/ a(A))))
idi*_*ous 37
只是我的两分钱,因为我今天试图解决这个问题.
假设我们有A = 1,2,3
如果你使用
A x A - (select 'a1' < 'a2') ((rename 'a' as 'a1')(A) x (rename 'a' as 'a2')(A))
Run Code Online (Sandbox Code Playgroud)
你不会得到单个最大值而是两个列,如1 | 1,2 | 1,3 | 2,3 | 1,3 | 2,3 | 3
获得3的方法是
project(a)A - project(a1)((select 'a1' < 'a2') ((rename 'a' as 'a1')(A) x (rename 'a' as 'a2')(A)))
Run Code Online (Sandbox Code Playgroud)
至少这是我在类似情况下必须做的事情.
希望它可以帮助某人
bhv*_*bhv 21
我们认为我们与属性A和值1,2,3有关系
A
1
2
3
Run Code Online (Sandbox Code Playgroud)
所以现在..
项目A值并用A1重命名
A1
1
2
3
Run Code Online (Sandbox Code Playgroud)
再次投影A值并用A2重命名
A2
1
2
3
Run Code Online (Sandbox Code Playgroud)
加上这个A2<A1
就是\join_{A2<A1}
这样 - 输出模式:(A2整数,A1整数)
A2<A1
1|2
1|3
2|3
Run Code Online (Sandbox Code Playgroud)
总是听到A2值会小于A1,因为我们join
喜欢(a2<a1
)
现在项目A2的输出如下
A2
1
2
Run Code Online (Sandbox Code Playgroud)
现在diff与原始属性
A diff A2
Run Code Online (Sandbox Code Playgroud)
A
1
2
3
Run Code Online (Sandbox Code Playgroud)
diff
Run Code Online (Sandbox Code Playgroud)
A2
1
2
Run Code Online (Sandbox Code Playgroud)
输出3
是最大值
嗨,我知道有人必须帮助编辑,以便更好看
Mar*_*ith 19
我现在已经忘记了大部分关系代数语法.查询只使用SELECT
,PROJECT
,MINUS
和RENAME
会
SELECT v1.number
FROM values v1
MINUS
SELECT v1.number
FROM values v1 JOIN values v2 ON v2.number > v1.number
Run Code Online (Sandbox Code Playgroud)
希望你能翻译!
我知道这是旧的,但这是一个手写的公式,可能很方便!
关系A:1,2,3,4
1. First we want to PROJECT and RENAME relation A
2. We then to a THETA JOIN with the test a1<a2
3. We then PROJECT the result of the relation to give us a single set of values
a1: 1,2,3 (not max value since a1<a2)
4. We then apply the difference operator with the original relation so:
1,2,3,4 --- 1,2,3 returns 4
4 is the Max value.
Run Code Online (Sandbox Code Playgroud)
找到最大值:
归档时间: |
|
查看次数: |
61763 次 |
最近记录: |