0
我有一个表拆分SQL结果与最大尺寸组= N
id | volume_id| ... |
----+----------+-----+
1 | 1 | ... |
2 | 2 | ... |
3 | 1 | ... |
4 | 3 | ... |
5 | 2 | ... |
...
我可以做一个简单的分组查询:
select volume_id, count(*), min(id) as min_id, max(id) as max_id
from my_table
group by volume_id;
将产生的结果:
volume_id | count | min_id | max_id
-----------+-------+--------+--------
1 | 67330 | ... | ...
2 | 67330 | ... | ...
3 | 67330 | ... | ...
4 | 67330 | ... | ...
但我想将结果拆分为40K行的组。所以结果应该是这样的:
volume_id | count | min_id | max_id
-----------+-------+--------+--------
1 | 40000 | ... | ... <- first group of IDs for volume 1
1 | 27330 | ... | ... <- second group of IDs for volume 1
2 | 40000 | ... | ...
2 | 27330 | ... | ...
3 | 40000 | ... | ...
4 | 27330 | ... | ...
的ID应该被拆分,使max_id
第一组的应该是从第二组等比min_id
小。
如果任何人有想法如何编写这样的查询(如果没有其他方式,或者plsql函数),我将不胜感激。
我正在使用Postgresql 9.5。
哇,好节奏!只有小小的改进:应该是'*'而不是't。*'。旁边的作品很棒! –