我在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/

10-12 06:55