【发布时间】:2013-10-17 10:58:09
【问题描述】:
假设我有下表:
CREATE TABLE numbers
(
key integer NOT NULL DEFAULT 0,
number1 integer NOT NULL DEFAULT 0,
number2 integer NOT NULL DEFAULT 0,
number3 integer NOT NULL DEFAULT 0,
number4 integer NOT NULL DEFAULT 0,
CONSTRAINT pk PRIMARY KEY (key),
CONSTRAINT nonzero CHECK (key <> 0)
)
我要检索的是所有 4 个数字的给定键中的最小值,但忽略那些为零的值。
当我认为我会遇到零问题时,我开始这样做:
SELECT LEAST(number1, number2, number3, number4) FROM numbers WHERE key = 1
例如,如果我有元组(1, 5, 0, 3, 2) 我想返回2,或者对于(2, 3, 0, 0, 0) 我想返回3 等等。
这可以在单个查询中完成(或者可能是嵌套的),我真的不想编写一个过程来做到这一点。
【问题讨论】:
-
我不明白,你说你想要最小的非零值,但在你的 2 个例子中你似乎与此相矛盾。
-
@Eluvatar:在他的例子中,第一个数字是
key。
标签: sql postgresql greatest-n-per-group