我有如下表格:
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
但是如何在同一个查询中对 future 的数据求和呢?我设法为 future 的数据创建了一个单独的查询:
select ID, sum(ID) from table where date > now() group by ID
请帮我做一个查询...谢谢。
最佳答案
您可以在以下情况下使用 CASE:
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 是因为我认为您的日期列只包含没有时间的日期信息,如果不是这种情况,请使用 now())
关于mysql - 根据 PostgreSql 中单个查询中的日期求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33606958/