2017-07-06 68 views
-1

我想返回一個總和,這是返回的多行數據的總和。我試圖返回顯示員工,帳戶和部門的數據。我想要這三個數據點支付的工資總和。我還希望員工只能拿出一筆錢來顯示他們的工資是如何分配的。下面是一個例子。任何幫助,將不勝感激。oracle sql:我如何在選擇統計中總結不同的數據點?

example

+1

請分享你已經想出了查詢。 –

回答

0

您可以在使用SUM分析功能的窗口條款不同羣體實現這一目標。

SELECT employee 
    , account 
    , dept 
    , SUM (salary) OVER (PARTITION BY employee) AS employee_salary 
    , SUM (salary) OVER (PARTITION BY dept) AS dept_salary_paid 
    , SUM (salary) OVER (PARTITION BY account) AS acct_salary_paid 
FROM mytable 

我不知道,如果這些集團都是你想要什麼(也許是我誤解你的問題),但它應該給你正確的想法。窗口化子句爲您提供了更大的靈活性,並允許您按不同的值對總和進行分組,而GROUP BY強制每個分組按SELECT進行一次分組。

編輯,根據您最近更新:

你並不需要一個GROUP BY和開窗條款。你可以做兩個不同的OVER(PARTITION BY ....)條款,所以它看起來像這樣:

select employee 
, activity 
, SUM (salary_amt) OVER (PARTITION BY employee, activity) AS "total salary by employee and activity" 
, SUM (salary_amt) OVER (PARTITION BY employee) AS "total salary by employee" 
from mytable where employee = 'xxx' 
-1

這將返回每個僱員的工資

SELECT employee, SUM(salary) 
FROM Table 
GROUP BY employee 
+0

這並沒有充分回答這個問題,我不確定這是否真的有用。他們想要多個款項。這可以通過使用窗口子句(如使用@McGlothlin)或通過連接邏輯完成...... – Jacobm001

+0

問題的最後兩個句子正在解決。他要求員工支付一筆款項,然後說明任何信息都有幫助。 –

-2

大廈在什麼McGothlin已經發布的總和:

SELECT employee 
    , account 
    , dept 
    , salary 
    , SUM (salary) OVER (PARTITION BY employee) AS "total salary by employee" 
    , ROUND(salary/SUM (salary) OVER (PARTITION BY employee) * 100) || '%' AS "salary distribution" 
FROM mytable 
+1

那麼,你從偷的答案中補充了什麼? – Jacobm001

+0

我已經添加了百分比計算,以便查詢實際返回請求的結果。你真的看過附加的截圖嗎? – fhossfel

0

什麼fossoss寫道基本上我是如何工作的。 這裏是我曾嘗試:

選擇員工,活動,SUM(salary_amt),SUM(salary_amt)OVER從MYTABLE (PARTITION BY員工)AS 「按僱員工資總額」 其中員工= 'XXX' 通過員工的團體,活動

我被表達得到誤差總和員工是不是一組

+0

請參閱我的答案中的修改。此外,這可能應該是對你的問題的編輯,而不是本身的答案。 – McGlothlin