2014-08-29 23 views
0

所以我對SQL相當陌生,但它一直正常,直到遇到以下問題。 我想要的是獲取ACCOUNT_COUNT列的SUM的語句,並將其與IS_TERMINATED列中的COUNT分開。用COUN除數SUM返回錯誤結果

我曾嘗試以下至今:

SELECT SUM(ACCOUNT_COUNT)/COUNT(IS_TERMINATED) FROM T_APPLICATIONS, V_USERS WHERE RESOURCE_TYPE='A'; 

這將返回:

1.36714285714285714285714285714285714286E02

雖然它應該返回:

5.0 6349206349206349206349206349206349206E00

如果我嘗試seperatly同時獲得SUM和COUNT值,它返回正確的價值觀

SELECT COUNT(IS_TERMINATED) FROM V_USERS; 

返回:

SELECT SUM(ACCOUNT_COUNT) FROM T_APPLICATIONS WHERE RESOURCE_TYPE='A'; 

回報:

957/189 = 5.06349206349206349206349206349206349206E00 

我不知道我在做什麼錯了..任何幫助,將不勝感激!

+0

想想你嘗試加入2個表嗎?如果是,它是錯誤的:嘗試'SELECT SUM(ACCOUNT_COUNT),COUNT(IS_TERMINATED),SUM(ACCOUNT_COUNT)/ COUNT(IS_TERMINATED)FROM T_APPLICATIONS,V_USERS WHERE RESOURCE_TYPE ='A'; '看到什麼值被計算出來。 – Jens 2014-08-29 09:42:30

+0

什麼是IS_TERMINATED其中RESOURCE_TYPE ='A'的總和? – 2014-08-29 09:43:29

回答

1

你忘了加入你的表格。

試試這個:

SELECT SUM(ACCOUNT_COUNT)/COUNT(IS_TERMINATED) 
FROM T_APPLICATIONS x inner join V_USERS v ON x.ID = v.ID 
WHERE RESOURCE_TYPE='A'; 

而且如果你沒有一鍵加入那就試試這個:

SELECT 
    (SELECT SUM(ACCOUNT_COUNT) FROM T_APPLICATIONS WHERE RESOURCE_TYPE='A')/
    (SELECT COUNT(IS_TERMINATED) FROM V_USERS) 
+0

沒有加入的鑰匙,但第二個答案創造了奇蹟!謝謝! – SQLNewbie 2014-08-29 09:50:25

+0

@SQLNewbie: - 不客氣。 :) – 2014-08-29 09:51:28

1

你得到正確的價值觀在不同querys,但在不正確的查詢,你加入兩個表(基本上,你交叉加入他們)。

你可以看到它出問題,如果你選擇的總和,並分別計數,但你的第一個查詢中:

SELECT 
    SUM(ACCOUNT_COUNT), 
    COUNT(IS_TERMINATED) 
FROM 
    T_APPLICATIONS, V_USERS WHERE RESOURCE_TYPE='A'; 

現在,爲了解決這個問題,只是嵌入兩個子查詢的選擇:

SELECT 
    (SELECT SUM(ACCOUNT_COUNT) FROM T_APPLICATIONS WHERE RESOURCE_TYPE='A')/
    (SELECT COUNT(IS_TERMINATED) FROM V_USERS) 
+1

謝謝,這個伎倆! – SQLNewbie 2014-08-29 09:49:58