You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用关系代数查询所有员工薪资均超30000的部门名称?

解决关系代数题:找出所有员工薪资均大于30000的部门名称

嘿,我来帮你理清这道题的问题所在,再给你正确的解法~

首先得指出你当前尝试的两个核心问题:

  • 你的第一步聚合后得到的NewRelation只有dname和empCount字段,完全没有salary,所以第二步用σ salary>30000筛选根本不成立,字段不存在。
  • 更关键的是逻辑偏差:你要找的是部门里所有员工薪资都>30000,而不是“部门里有员工薪资>30000”,你的思路完全没抓住这个核心要求。

下面用你指定的符号(G作为聚合函数标识)给出两种正确的解法:

解法一:补集思路(反证法)

通过排除存在低薪员工的部门,剩下的就是符合要求的部门:

  1. 先找出所有存在薪资≤30000员工的部门:
    BadDepts(dname) <- ∏ dname (σ salary<=30000 (Employee ⋈ dept=deptNo Department))
    
  2. 从所有部门中剔除这些“坏部门”:
    ∏ dname (Department) - BadDepts
    

解法二:聚合统计最低薪资

直接统计每个部门的最低工资,只要最低工资都超过30000,那部门内所有员工薪资肯定都达标:

  1. 连接员工和部门表,按部门名称分组,计算每个部门的最低工资:
    DeptSalaries(dname, min_salary) <- dname G min(salary) (Employee ⋈ dept=deptNo Department)
    
  2. 筛选出最低工资>30000的部门名称:
    ∏ dname (σ min_salary>30000 (DeptSalaries))
    

这两种方法都能准确实现需求,你可以根据自己的理解选择其中一种~

内容的提问来源于stack exchange,提问作者Jananath Banuka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:48:50