2012-06-22 143 views
1

Hoe可以在不使用查詢的情況下執行以下操作。在sql中使用聚合函數

!--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是此表的主鍵。

我該怎麼做?

回答

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

假設你正在使用mysql放置'limit',如果你正在使用sql server使用'top 1'或者如果你使用oracle使用'rownum = 1' – manurajhada

+0

謝謝你的幫助 –

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); 
+0

感謝你的幫助 –

+0

@WeliNuwan如果它有效,你應該投票並接受答案:http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –

0

下面的查詢就可以了(修改取決於你的SQL風味):

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

這將獲得所有managerid的,可能你需要做在頂上 1;)(或限制) –

+0

@aF。好點:) – geekchic

+0

謝謝你的幫助。 –