我有一个查询,可以查询个人的月收入。我想得到他们不同收入的总和(2个工作,退休金等)。由于它们是月度值,因此我还需要乘以12才能获得其年总收入
select DISTINCT f.monthly * 12 as [Income]
FROM
Money
WHERE
ID_ = 5
AND type = 'income';
这给了我
Income
6756
32772
这就是我要对列进行总计的方式
select DISTINCT SUM(f.monthly * 12) as [Income]
FROM
Money
WHERE
ID_ = 5
AND type = 'income';
这给了我
Income
237168
当总数应该为39528时。我试过移动方括号,以使其首先对列求和,然后乘以12,但得到的结果相同
答案 0 :(得分:3)
原始查询中的distinct
就是错误的-如果两个人的收入相同,则只取其中一个。第二个查询中的distinct
本身不是错误的,只是没有意义。 SUM
返回一行,因此对其应用distinct
不会执行任何操作。
长话短说-丢失两个查询中的distinct
修饰符,您就可以了。
答案 1 :(得分:1)
您需要子查询:
select sum(income)
from (select distinct f.monthly * 12 income
from Money
where ID_ = 5 and type = 'income'
) t;
答案 2 :(得分:1)
您需要将distinct
放置在sum
函数内部,而不是外部...
select SUM(DISTINCT f.monthly * 12) as [Income]
FROM
Money
WHERE
ID_ = 5
AND type = 'income';