在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和所有编程语言的新手。
答案 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;
如果您只想输出原始布尔值,请使用:
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;