具有子句后的聚合函数

时间:2015-10-03 00:10:48

标签: mysql sql database relational-database database-schema

考虑到我们有以下架构:

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函数返回每个经理的部门预算总和?

0 个答案:

没有答案