考虑到我们有以下架构:
Emp(eid:integer, ename:string, age:integer, salary:real)
Works(eid:integer, did:integer, pct_time:integer)
Dept(did:integer, budget:real, managerid:integer)
问题是"如果经理管理多个部门,他或她控制这些部门的所有预算的总和。找到控制超过500万美元的经理人。"我为这个问题编写了以下查询:
版本1:
SELECT d.managerid
FROM department d
GROUP BY managerid
HAVING (SELECT Sum(d2.budget)
FROM department d2
WHERE d.managerid = d2.managerid) > 5000000
第2版:
SELECT d.managerid
FROM department d
GROUP BY managerid
HAVING Sum(d.budget) > 5000000
我想知道上述2个查询之间有什么区别? has子句是否需要嵌套的SELECT语句?
编辑:版本1是多余的,因为 GROUP BY 关键字允许sum函数返回每个经理的部门预算总和?