Wol*_*gon 3 sql postgresql subquery sql-order-by greatest-n-per-group
在PostgreSQL中:我有一个包含3列的表:
CustomerNum, OrderNum, OrderDate.
每个日期范围内每个客户可能(或可能不)有许多订单.我需要的是每个客户的最后一个OrderNum,它位于提供的日期范围内.我一直在做的是获取客户的ResultSet并分别查询每个客户,但这需要花费太多时间.
有没有办法使用子选择来选择客户,然后获得每个客户的最后一个OrderNum?
小智 10
在postgres上,您还可以使用非标准DISTINCT ON子句:
SELECT DISTINCT ON (CustomerNum) CustomerNum, OrderNum, OrderDate
FROM Orders
WHERE OrderDate BETWEEN 'yesterday' AND 'today'
ORDER BY CustomerNum, OrderDate DESC;
Run Code Online (Sandbox Code Playgroud)
见http://www.postgresql.org/docs/current/static/sql-select.html#SQL-DISTINCT
小智 7
select customernum, max(ordernum)
from table
where orderdate between '...' and '...'
group by customernum
Run Code Online (Sandbox Code Playgroud)
就这样.