从列中的所有值中减去最小值

时间:2009-05-28 02:52:57

标签: sql

是否有另一种方法可以从列的所有值中减去最小值,从而有效地抵消这些值?

我找到的唯一方法对于更复杂的查询变得非常复杂。

CREATE TABLE offsettest(value NUMBER);
INSERT INTO offsettest VALUES(100);
INSERT INTO offsettest VALUES(200);
INSERT INTO offsettest VALUES(300);
INSERT INTO offsettest VALUES(400);

SELECT value - (SELECT MIN(value) FROM offsettest) FROM offsettest;

DROP TABLE offsettest;

如果可能的话,我想将它限制为单个查询(没有存储过程,变量等),首选标准SQL(尽管我使用的是Oracle)。

2 个答案:

答案 0 :(得分:6)

我认为这适用于ANSI 1999。

SELECT value - MIN(value) OVER() FROM offsettest;

答案 1 :(得分:-1)

但是,它会帮助您查看实际查询,因为这取决于您是否需要以这种方式操作多个列,并且各种最小值来自不同的行,可能有更有效的方法来执行此操作。如果OVER()适合你,那就好了。