在postgres中查询整数附近的范围

时间:2019-07-25 05:40:39

标签: postgresql

在postgresql中,我想确定一个已知整数是否在另一个整数的+/-范围内。此查询的功能是什么?

示例:在我的数据集中,我有2个表:

Table_1
ID   integer
 1     2000
 2     3000
 3     4000
Table_2
ID   integer
 1     1995
 2     3050
 3     4100

对于每个ID对,我想查询Table_1.integer是否为Table_2.integer的+/- 25。

The answers would be:
ID 1: TRUE
ID 2: FALSE
ID 3: FALSE

非常感谢您的帮助。我是刚开始使用postgresql和所有编程语言的新手。

2 个答案:

答案 0 :(得分:1)

对于每个integer,我们可以尝试检查两个ID值之差的绝对值:

SELECT
    t1.ID,
    CASE WHEN ABS(t1.integer - t2.integer) <= 25 THEN 'TRUE' ELSE 'FALSE' END AS answer
FROM Table_1 t1
INNER JOIN Table_2 t2
    ON t1.ID = t2.ID
ORDER BY
    t1.ID;

enter image description here

Demo

如果您只想输出原始布尔值,请使用:

SELECT
    t1.ID,
    ABS(t1.integer - t2.integer) <= 25 AS answer
FROM ...

答案 1 :(得分:0)

这几乎与@Tim的解决方案相似,但没有CASE表达式,如果您希望输出boolean类型,则很有用。

SELECT t1.ID,ABS(t1.integer - t2.integer) <= 25 as res
FROM table_1 t1 JOIN table_2 t2
    ON t1.ID = t2.ID;

DEMO