PostgreSQL中的rank()
一个简单的问题-我写了这段代码:PostgreSQL中的rank(),postgresql,aggregate-functions,Postgresql,Aggregate Functions,一个简单的问题-我写了这段代码: SELECT memid, facid, starttime, slots, SUM(slots) over(partition by memid ORDER BY starttime), rank() over(partition by memid) FROM cd.bookings; 我希望它能为我输出这样的结果: memid facid starttime slots sum rank 0 2 2012-07-01 2
SELECT memid, facid, starttime, slots,
SUM(slots) over(partition by memid ORDER BY starttime),
rank() over(partition by memid)
FROM cd.bookings;
我希望它能为我输出这样的结果:
memid facid starttime slots sum rank
0 2 2012-07-01 2 2 1
0 5 2012-07-02 2 4 1
0 1 2012-07-03 2 6 1
0 2 2012-07-04 2 8 1
0 3 2012-07-05 2 10 1
1 2 2012-07-01 2 2 2
1 2 2012-07-02 2 4 2
1 2 2012-07-03 2 6 2
1 2 2012-07-04 2 8 2
. . . . . .
. . . . . .
. . . . . .
n ... ... ... ... X
所以,我希望它为每个memid指定一个递增的秩值但是,排名列总是停留在1。我也尝试使用稠密的_rank()函数将其切换,但它也不起作用。我做错了什么 尝试在RANK()中使用ORDER BY,就像在SUM()中一样。RANK()需要一个ORDER BY…SUM()不是那么多:)问题在于按memid划分,我想,试试这个:densite_RANK()over(ORDER BY memid)谢谢你们,这两个解决方案对我都有效:)