【发布时间】:2020-02-23 03:46:39
【问题描述】:
我目前非常希望将两张桌子连接在一起。但通常,当您想要连接两个表时,它们只有在两边的值本身相等时才会连接。如果一个值在一个区间内,我正在寻找一个连接。让我解释一下:
我有这些表:
inscription(studentNumber, note)
thresVal(threshold, value)
表格题字看起来有点像这样:
studentNumber | note
--------------+------
123 | 78
456 | 65
789 | 52
012 | 90
345 | 37
tresVal 看起来像这样:
treshold | value
----------+--------
90 | 4.3
85 | 4
80 | 3.7
77 | 3.3
73 | 3
70 | 2.7
65 | 2.3
60 | 2
57 | 1.7
54 | 1.3
50 | 1
35 | 0.5
0 | 0
现在,我想要的是一个连接,它检查学生笔记的范围并相应地添加行“值”,如下所示:
studentNumber | note | value
--------------+-------
123 | 78 | 3.3
456 | 65 | 2.3
789 | 52 | 1
012 | 90 | 4.3
345 | 37 | 0.5
如您所见,范围介于行的值与其前一个值之间。 65 的音符大于或等于阈值 65,因此它的值必须是 2.3。从 65 到 69 的所有音符都必须赋予 2.3 的值,依此类推。
我似乎无法为这个问题想出一些好的东西,我所能想到的就是一个接一个地对每种可能性进行硬编码,但必须有一个更简单的答案。
【问题讨论】:
-
这能回答你的问题吗? Best way to join on a range?
标签: postgresql join range