所以我对SQL很新,但在遇到以下问题之前一直没问题。 我想要的是一个语句,它获取ACCOUNT_COUNT列的SUM,而不是将其与IS_TERMINATED列中的COUNT分开。
到目前为止,我已尝试过以下内容:
SELECT SUM(ACCOUNT_COUNT) / COUNT(IS_TERMINATED) FROM T_APPLICATIONS, V_USERS WHERE RESOURCE_TYPE='A';
返回:
1.36714285714285714285714285714285714286E02
虽然它应该返回:
5.06349206349206349206349206349206349206E00
如果我尝试单独获取SUM和COUNT值,则返回正确的值
SELECT COUNT(IS_TERMINATED) FROM V_USERS;
返回:
189
和
SELECT SUM(ACCOUNT_COUNT) FROM T_APPLICATIONS WHERE RESOURCE_TYPE='A';
返回:
957
957 / 189 = 5.06349206349206349206349206349206349206E00
我不知道我做错了什么..任何帮助都将不胜感激!
答案 0 :(得分: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)
答案 1 :(得分:1)
您可以在不同的查询中获得正确的值,但在不正确的查询中,您可以加入这两个表(基本上,您可以交叉加入它们)。
如果您在第一个查询中单独选择总和和计数,则可以看到它出错:
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)