我在Postgres(custdata
)中有一个表如下所示:
customerid | mID | count
1 3 13
1 2 17
1 2 3
1 5 14
1 4 7
像这样的查询:
SELECT
c.customerid,
c.mID,
c.count,
SUM (c.count)
FROM custdata c
JOIN tableB b
ON b.customerid = c.customerid
WHERE c.mID <> 2
AND b.starttimestamp = ? and b.endtimestamp = ?
我想得到
count
列中mID
不等于2的值的和。在这种情况下,正确的总和是34。但在我的例子中,结果是返回两个不同的和不正确的行。如何获取count
列中mID
不是2的值之和?任何帮助都将不胜感激。 最佳答案
希望,我明白了。
请检查以下查询
SELECT
c.customerid,
c.mID,
c.count,
SUM(case when c.mID<>2 then c.count else 0 end) over(partition by c.customerid order by c.customerid) sum_col
FROM custdata c
JOIN tableB b
ON b.customerid = c.customerid
WHERE
--c.mID <> 2 AND
b.starttimestamp = ? and b.endtimestamp = ?
关于sql - Postgres-在另一列的条件下获取一列中值的总和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42752105/