【发布时间】:2015-02-06 09:01:05
【问题描述】:
我有以下订单表:
| id | user_id | order_date |
| 1 | 5 | 24/03/2014 |
| 2 | 5 | 25/02/2014 |
| 3 | 6 | 25/06/2014 |
我想要一个查询,它返回我表中每个用户的最大 order_date。在我的示例中,结果将是:
| id | user_id | order_date |
| 1 | 5 | 24/03/2014 |
| 3 | 6 | 25/06/2014 |
我尝试了以下查询:
select user_id, id, max(order_date)
from order
GROUP BY cmd_user_id;
但是此代码会产生以下错误:列“order.id”必须出现在 GROUP BY 子句中或用于聚合函数中。
我不知道在这里做什么。有人能帮助我吗?
我觉得我需要一个 group by,因为这是我查询的开始。之后我想添加一些额外的条件来选择订单(例如通过特定付款方式支付的订单以及过去 10 天的订单,但我总是对过去 10 天的最大日期感兴趣)。
非常感谢您的帮助。
【问题讨论】:
-
只需从查询中删除
id列。
标签: sql postgresql group-by greatest-n-per-group