我有一些要合并的移位和中断数据。下面是它的样子:
您可以看到我有一组班次和一组休息时间。我想加入worker的两个表,其中工位开始和结束时间介于开始和结束班次之间。因此,最终结果将如下所示:
您可以看到,在此内部联接中,不符合条件的中断之一被排除在结果之外。请原谅这些是图片而不是代码,因为我目前没有复制能力。
我知道通常的情况:
SELECT
*
FROM
shifts inner JOIN breaks ON
BREAKS.worker = shifts.worker AND
breaks.break_start between shifts.shift_start AND shifts.end_shift;
但是我不确定如何在break_end列中使用该公式。谢谢。
答案 0 :(得分:0)
range data types及其“包含”运算符应很好地解决此问题:
tstzrange(shifts.shift_start, shifts.end_shift)
@> tstzrange(breaks.break_start, breaks.break_end)