SQL GroupBy with Where子句

时间:2018-03-13 18:27:14

标签: sql postgresql

以下查询返回任何存在的用户where transaction_date> ' 3/1/2017年'并且总和(AMOUNT)>从所有日期3000。

我想只返回有总和(AMOUNT)>的用户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

4 个答案:

答案 0 :(得分:1)

{<1}}在聚合之前处理。因此,您的查询仅考虑该日期之后的交易。

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

WHERE

如果您对结果有疑问,可能是由于日期格式化。

答案 1 :(得分:1)

使用to_date函数格式化日期和=&gt;至少你需要的金额。

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

答案 2 :(得分:0)

如果你想要包含3000

USE&gt; =在Gordon的代码中

SUM(AMOUNT) >= 3000

答案 3 :(得分:0)

试试这个:

SELECT用户 来源 WHERE日期(transaction_date)&gt; “2017年3月1日” GROUP BY用户 拥有和(AMOUNT)&gt; 3000;

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