postgreSQL GroupBy with Where clause



以下查询返回存在于 Where transaction_date> '3/1/2017' 并且所有日期的总和(金额(> 3000 的任何用户。

我只想返回 3000 年 3 月 1 日之后的总和(金额(> 2017 的用户。 换句话说,用户只需要在 2017 年 3 月 1 日之后的交易中获得至少 3000 美元的总和(金额(。

 SELECT   User
 FROM     Source
 Where transaction_date > '3/1/2017'
 GROUP BY User
 HAVING   sum(AMOUNT) > 3000

> WHERE在聚合之前进行处理。 因此,您的查询仅考虑该日期之后的交易。

我强烈建议您使用 ISO 标准日期格式并将查询编写为:

SELECT User
FROM Source
WHERE transaction_date > '2017-03-01'
GROUP BY User
HAVING SUM(AMOUNT) > 3000;

如果结果有问题,可能是由于日期格式造成的。

用于to_date格式化日期和=>的函数,至少需要您需要的数量。

SELECT   User
FROM     Source
Where transaction_date > to_date( '3/1/2017','dd/mm/rrrr')
GROUP BY User
HAVING   sum(AMOUNT) => 3000

如果你想包含 3000,请在 Gordon 的代码中使用>=

SUM(AMOUNT) >= 3000

试试这个:

选择用户从源其中(transaction_date(日期> '2017-03-01'按用户分组金额>3000;

如果问题仍然存在,请在表中共享您的数据格式。

最新更新