使用postgres范围类型查找自由区域

时间:2017-06-09 19:28:13

标签: postgresql

我想在postgres中使用范围类型来实现预订服务。基本模式是area,表示范围,以及一组reservations,它们是总区域的子集。

create table area (
  id int primary key,
  range int8range);

create table reserved (
  area int references area (id),
  range int8range);

我已经成功完成了一些基本操作,但是我一直在构建分配未使用空间的查询。

例如,如果范围为[0,100)的区域有两个预留[20,50]和[60,90],并且我想保留一个大小为10的空间,那么我想找到一个未使用的部分总面积(例如[0,10))。但是,如果我想保留大小为30的空间,那么我想生成多个不连续的区域(例如[0,10],[50,60]和[90,100))。

0 个答案:

没有答案