在sql中使用聚合函数

时间:2012-06-22 08:59:38

标签: sql aggregates

如果不使用一个查询中的VIEW,我可以执行以下操作。

!--CREATE THE VIEW

CREATE OR REPLACE VIEW BDGTMGR
AS
  SELECT MANAGERID,SUM(BUDGET) AS BDGT FROM 
  N_DEPT GROUP BY MANAGERID ;

!-- THEN GET RESULT FROM THE VIEW

SELECT MANAGERID FROM BDGTMGR WHERE BDGT = (select MAX(BDGT) FROM BDGTMGR);

这里N_DEPT可能是原始表,其中包含名为DID,MANAGERID和BUDGET的列。

我想获得控制最高预算的MANAGERID。经理可以控制多个部门。 DID是此表的主键。

我该怎么做?

3 个答案:

答案 0 :(得分:2)

select   MANAGERID,SUM(BDGT) 
from     N_DEPT 
group by MANAGERID 
order by SUM(BDGT) desc limit 1

答案 1 :(得分:1)

你可以这样做:

SELECT aux.MANAGERID
FROM
  (SELECT MANAGERID,
         SUM(BUDGET) AS BDGT
   FROM N_DEPT
   GROUP BY MANAGERID) aux
INNER JOIN BDGTMGR b ON b.MANAGERID = aux.MANAGERID
WHERE b.BDGT = (select MAX(BDGT) FROM BDGTMGR);

答案 2 :(得分:0)

以下查询将起作用(根据您的SQL风格进行修改):

SELECT TOP 1 MANAGERID FROM N_DEPT GROUP BY MANAGERID ORDER BY SUM(BUDGET) DESC