sql - 为什么查询多于每个实体与少于一些实体更难?

标签 sql database relational relational-algebra

这是数据库,粗体主键。

  • 工作(person_name, company_name, salary)

假设我们有这个问题:

找出收入高于 Small Bank Corporation 每位员工的所有员工的姓名。

建议的解决方案:

我们无法轻松计算收入高于 Small Bank Corporation 每位员工的员工集,但我们可以计算收入低于 Small Bank Corporation 部分员工的员工集。我们从所有员工的集合中减去这个集合。请注意小于或等于,我们会删除同名的记录。

temp ← ∏person_name(σp(works⨯ρd(works)))

p在哪里

works.person_name ≠ d.person_name ∧
works.salary ≤ d.salary ∧
d.company_name = "Small Bank Corporation"

那么答案是:

∏person_name(works) − temp

为什么我们不能轻松地计算出收入高于 Small Bank Corporation 每位员工的一组人?为什么我们可以轻松计算出收入较低的人群?我不明白这一点。 works.salary <= d.salary 究竟做了什么?它是否通过所有 d.salary 实体对每个 works.salary 实体进行循环,并查看它是否 <= for ALL d.salary 实体?

最佳答案

查询可以很容易地表达如下:

select person_name
from works
where salary > (
    select max(salary) 
    from works 
    where company_name = 'Small Bank Corporation')

关于sql - 为什么查询多于每个实体与少于一些实体更难?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34103895/

相关文章:

sql - Hive-我如何使用原始表中的分区 "create table as select.."?

sql - PostgreSQL : Converting comma separated integer values and intervals to sequenced numbers

mysql - 仅对表中的少数/有限行进行求和或计数

php - 为什么会出现这些php session_start()错误?

数据库设计关系代数查询

java - 将关系数据库表关联到 Java 类的最佳方法是什么?

sql - 无法访问 SQL Server 2005 表中的单行

Java数据库驱动设计

ios - 如何创建 Sqlite3 数据库 - IOS

database - 一个关系可以有不同长度的候选键吗?