根据PostgreSql中单个查询中的日期求和

时间:2015-11-09 10:21:29

标签: mysql postgresql date sum

我有一张如下表:

ID | Date       | Value
---+------------+------
H1 | 11/9/2015  | 3
H2 | 11/10/2015 | 5
H3 | 11/11/2015 | 2
H1 | 11/9/2015  | 1
H2 | 11/13/2015 | 4
H3 | 11/8/2015  | 5
H1 | 11/15/2015 | 8

我想创建一个单独的查询,可以显示如下结果:

ID | All Values | Future Values
---+------------+--------------
H1 |         12 |             8
H2 |          9 |             9
H3 |          7 |             2

我可以通过编写查询

来汇总所有数据
select ID, Sum(ID) from table group by ID

但如何在同一查询中汇总未来数据?我设法为将来的数据创建一个单独的查询:

select ID, sum(ID) from table where date > now() group by ID

请帮我制作一个查询...谢谢。

1 个答案:

答案 0 :(得分:1)

你可以使用CASE WHEN:

SELECT
  ID,
  SUM(value) AS all_values,
  SUM(CASE WHEN date > current_date THEN value END) AS future_values
FROM
  table
GROUP BY
  ID

(我正在使用current_date,因为我认为你的日期列只包含没有时间的日期信息,如果不是这样,请立即使用()