Postgresql中的下限和上限

uinbv5nw  于 10个月前  发布在  PostgreSQL
关注(0)|答案(1)|浏览(129)

我们有A列,值为10,20,30等,B列,值为6,12,18,24等。两列在2个不同的表中是不同的。我想计算A列中值的上限和下限。例如,对于A列:20,上限= 24,下限=18。我们可以用colA<max(colB)作为下限,colA>min(ColB)来计算。由于两个表列不同,我不能直接在postgresql中连接它们。
寻找逻辑如何查找值时,我们没有共同的列

nwnhqdif

nwnhqdif1#

试试这个:

SELECT A,
    (SELECT max(B) FROM table_b WHERE B <= table_a.A) as low_bound,
    (SELECT min(B) FROM table_b WHERE B >= table_a.A) as upper_bound
FROM table_a

字符串
第二个选项可以是创建CTE并使用LAG,如下所示:

WITH cte AS (
    SELECT B AS b1, LAG(B) OVER (ORDER BY B ASC) AS b2 FROM table_b
)
SELECT * FROM cte INNER JOIN table_a ON (a <= b1 AND a >= b2)


在公共表表达式中,您将得到两个数字,B和前面的B。
对于B = 12,你得到B1 = 12B2 = 6,接下来的数字也是如此。
然后,使用INNER JOIN,您将使用这些数字之间的A将它们连接起来。

相关问题