【问题标题】:Query using aggregation and/or groups in relational algebra - count, max, min, etc在关系代数中使用聚合和/或组进行查询 - 计数、最大值、最小值等
【发布时间】:2013-03-27 13:51:16
【问题描述】:

我阅读了很多教科书并浏览了互联网上的很多页面,但我无法理解函数/运算符(如 min、max、count 等)如何聚合在关系/表或元组组上/关系/表中的行是使用基本操作构建的,例如 ∪(联合)、∩(交集)、x(连接)、-(减号)、π(投影)......

谁能告诉我如何用关系代数表达这些函数/运算符?

【问题讨论】:

  • 这是good explanation。在第一个答案中,有一个示例说明如何使用关系代数编写 MAX 函数。希望对您有所帮助。

标签: group-by count max aggregate-functions relational-algebra


【解决方案1】:

尚未完全包含关系代数中的计算功能。

在关系代数中,模式 (A1, A2, ... An) 上的聚合操作如下所示:

G1, G2, ..., Gm g f1(A1'), f2(A2'), ..., fk(Ak') (r)

其中每个Aj', 1 ≤ j ≤ k 都是Ai, 1 ≤ i ≤ n 的原始属性之一。

g 前面的属性是分组属性,其功能类似于 SQL 中的“group by”子句。然后有任意数量的聚合函数应用于各个属性。该操作适用于任意关系 r。分组属性是可选的,如果未提供,聚合函数将应用于应用操作的整个关系。

假设我们有一个名为 Account 的表,其中包含三列,即 Account_Number、Branch_Name 和 Balance。我们希望找到每个分支的最大余额。这是由Branch_NameGMax(Balance)(Account) 完成的。要找到所有账户的最高余额,无论分行,我们可以简单地写GMax(Balance)(Account)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-03
    • 1970-01-01
    • 2017-08-31
    • 2015-04-12
    相关资源
    最近更新 更多