我有这样的数据库(实际上比这个数据库大得多):
value
-------
10
20
50
600
70
800
我想获得满足某些条件(where
)的最小值和最大值。
我写了这些selects
:
select value
from records
where value >= 50
order by value asc
limit 1
select value
from records
where value <= 600
order by value desc
limit 1
但是我可以一次select
来更有效地做到这一点吗?
答案 0 :(得分:1)
您可以在and
子句中使用WHERE
组合两个条件,并在min()
上使用max()
和value
函数。
select max(value) as Maximum, min(value) as Minimum
from records
where value >= 50
and value <= 600
答案 1 :(得分:0)
更通用的方法使用条件聚合:
select max(value) filter (where value >= 50),
min(value) filter (where value <= 600)
from records ;
WHERE
子句中的过滤功能可以解决您所遇到的问题。但是,它不能概括为两个以上的值。而且即使是其他对也很麻烦。