use*_*579 4 sql postgresql group-by
假设我创建了一个表'orders':
CREATE TABLE orders (id SERIAL,
customerID INTEGER,
timestamp BIGINT,
PRIMARY KEY(id));
Run Code Online (Sandbox Code Playgroud)
时间戳是UNIX时间戳.现在我想为每个客户选择最新订单的ID.作为一个观点会很好.
但是以下声明
CREATE VIEW lastOrders AS SELECT id,
customerID,
MAX(timestamp)
FROM orders
GROUP BY customerID;
Run Code Online (Sandbox Code Playgroud)
导致postgre错误:
错误:列"orders.id"必须出现在GROUP BY子句中或用于聚合函数
我究竟做错了什么?
小智 12
对于这些类型的东西,你可以使用2种方法.Jens已经展示了一个.
其他,是使用"DISTINCT ON"条款:
CREATE VIEW lastOrders AS
SELECT
DISTINCT ON (customerID)
id,
customerID,
timestamp
FROM orders
ORDER BY customerID, timestamp desc;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4321 次 |
| 最近记录: |