2014-08-29 24 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