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

标签 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

但是如何在同一个查询中对 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/

相关文章:

mysql - 按用户分组并显示最新的 MYSQL 不起作用

SQL SELECT 语句,列名作为来自另一个表的值

java - 如何使用 java 8 lambda 和流对 Map<YearMonth, List<LocalDate>> 进行排序

mysql - 以 "dd.mm.yyyy"等格式在表中插入日期

sql - proc sql join 在最接近日期的 SAS 中

mysql - 如何仅选择包含 mySQL 中另一组的部分或全部的特定组

php - 在 PHP 中为 MATCH AGAINST 准备的语句不起作用

mysql - 登录后如何显示每个用户的总数 - 数据库有 25,000 个用户 - 数百万行?

SQL连接同一个表中的两列

sql - 函数参数anyelement,PostgreSQL bug?