1
我有三列a,b,c我想在'c'列中填寫真或假,如果'b'列的值低於或等於'a'列的10%... ......... 其實,我想更新列「b」如果該值最接近列列所需的百分比
a | b | c
100 | 90 | true
100 | 110 | true
100 | 88 | false
我要生成PostgreSQL中查詢
我有三列a,b,c我想在'c'列中填寫真或假,如果'b'列的值低於或等於'a'列的10%... ......... 其實,我想更新列「b」如果該值最接近列列所需的百分比
a | b | c
100 | 90 | true
100 | 110 | true
100 | 88 | false
我要生成PostgreSQL中查詢
我想你可以試試這個:
SELECT a, b, CASE WHEN ABS(a-b) <=0.1*a THEN TRUE ELSE FALSE END AS c
FROM yourtable;
產量:
a b c
1 100 90 True
2 100 110 True
3 100 88 False
關於更新B,您沒有指定要使用B的值,但是你可以使用這樣的事情:
UPDATE yourtable SET b = <your value>
WHERE ABS(a-b) <=0.1*a;
你想知道是否
b between a * 0.9 and a * 1.1
如果情況並非如此(或者我理解它),您希望將b設置爲a * 0.9
或a * 1.1
:
update mytable
set b = case when b < a then a * 0.9 else a * 1.1 end
where b not between a * 0.9 and a * 1.1;
(這些公式僅適用於正值。如果你的桌子也包含負值,你必須調整它們。)
我不明白...... 90和88都是100%以上的10%,那麼爲什麼有一個是真的,另一個是假的? –
@Oto Shavadze:顯然是語言問題。這大概是'a' +/- 10%。 –
@ThorstenKettner - 如果是,則清除。 –