当前位置: 首页 > 面试题库 >

总关系代数(最大值)

暨嘉
2023-03-14
问题内容

我目前正在从事一项作业分配,需要进行选择,该选择会抽出一个元素,该元素包含一个与所有其他记录相比具有最大值的特定属性。我已经在线阅读了许多资料,这些资料引用了称为“最大值”的“聚合”关系代数函数,但是它们没有描述它如何使用基本运算符来工作。如何选择包含最大值的属性?


问题答案:

仅使用基本运算符就可以很好地表达聚合函数。这是一件很整洁的事情。

假设我们有一个表T,我们想找到其“值”字段的最大值。首先,我们应该将T的笛卡尔积与自身-
或更确切地说,将其与副本T2进行比较。然后,我们选择T.value小于T2.value的行:这将为我们排除所有 不需要的
行,这些行的值小于某些其他行的值。为了获得最大值,我们应该从所有行集中减去这些不需要的行。就是这样。至少这是基本思想,我们还需要使用投影来正确确定尺寸。

不幸的是,我不知道如何在此处插入Latex,但是使用关系代数表示法,可能是这样的:

蟺(T.a1...Tan, T.value)(T)
    -
蟺(T.a1...Tan, T.value)(
    蟽(T.value<T2.value)( 蟻(T, T2) x T )
)

其中蟺是投影算子,-是集合差,蟽是选择算子,而ant是重命名算子。

SQLishly:

SELECT T.* FROM T
    MINUS
SELECT T.* FROM T, T as T2 WHERE T.value<T2.value

更实际的是:

SELECT T.* FROM T LEFT JOIN T as T2 ON T.value<T2.value WHERE T2.value IS NULL

当然,所有这些主要只是学术上的兴趣,即表明关系代数是 有效的



 类似资料:
  • 主要内容:1. 选择操作,2.项目操作,3.联合操作,4. 集合交集,5. 集合差集,6. 笛卡尔积,7. 重命名操作关系代数是一种过程查询语言,它提供了一步一步的过程来获取查询的结果。 它使用运算符来执行查询。 关系操作的类型 1. 选择操作 选择(select)操作选择满足给定谓词的元组。 它由西格玛(σ)表示。 其中: 用于选择预测 用于关系 用作命题逻辑公式,可以使用以下连接符:和。这些关系可以用作关系运算符,如:,,,, 和 。 例如 : LOAN关系 BRANCH_NAME LOAN

  • 问题如下:给定两个数字n和k。对于区间[1, n]中的每个数字,您的任务是计算其不可被k整除的最大除数。打印所有这些除数的和。注意:k始终是质数。t=3*10^5,1 我解决这个问题的方法是:对于1到n范围内的每个i,所需的除数是i本身,只有当i不是k的倍数时。如果i是k的倍数,那么我们必须找到一个数字的最大除数并与k匹配。如果不匹配,那么这个除数就是我的答案。否则,第二大除数就是我的答案。 例如

  • 我一直在做一些实验,使用一些变换,例如在Matlab中对图像数据进行DCT变换。使用512x512像素lena图像的DCT示例: x=双(imread('lenna.bmp'));R=dct2(x); 然后,我想通过保持R的100000个最大系数并将剩余的设置为零来阈值变换系数。 我该怎么做?

  • 问题内容: 我正在为考试而学习,没有找到确定要使用笛卡尔乘积还是要使用自然联接的可靠标准。 我想出了一个粗略的指导: “如果需要投影与要连接的表中的属性具有相同名称的属性,则必须使用并声明要投影的表名称:” 但是,这并没有遵循我的笔记中的某些解决方案,并且我的讲师似乎与上述约定结合使用或互换使用。 有没有人能遵循一个规则来定义一个相对于另一个的使用? 以以下模式为例(仅与为简短起见而引用的问题相关

  • 我在一次采访中被问到这个问题。给定一个整数数组(具有正值和负值),我们需要找到具有相等总和的不相交子数组的最大数量。 例子: 输入:[1,2,3]输出:2{因为我们最多有2个子数组,总和=3,即[1,2],[3]} 输入: [2 2 2 -2] 输出 : 2 {两个子数组,每个子数组的总和 = 2,即 [2],[2, 2, -2]} 我的方法 我想到的第一种方法是找到前缀和数组,然后以每个元素(前

  • 本文向大家介绍php中关于socket的系列函数总结,包括了php中关于socket的系列函数总结的使用技巧和注意事项,需要的朋友参考一下 本文列举了所有关于PHP语言中使用socket相关服务的一些函数。注意使用如下函数之前,你需要确保你的socket已打开,如果你没有打开,请编辑你的php.ini文件,去掉下面这行前面的注释(分号): 如果你无法去掉注释,那么请使用下面的代码来加载扩展库: 如