假设我有一个这样的表:
name | score_a | score_b -----+---------+-------- Joe | 100 | 24 Sam | 96 | 438 Bob | 76 | 101 ... | ... | ...
我想选择最小的score_a和score_b。换句话说,类似:
SELECT name, MIN(score_a, score_b) FROM table
结果当然是:
name | min -----+----- Joe | 24 Sam | 96 Bob | 76 ... | ...
但是,当我在Postgres中尝试此操作时,我得到:“没有函数与给定的名称和参数类型匹配。您可能需要添加显式的类型转换。” MAX()和MIN()似乎 跨行 而不是 列工作。
有可能做我想做的事吗?
最少(a,b):
该GREATEST和LEAST功能中选择任意数量的表达式的列表,最大或最小值。表达式必须全部可转换为通用数据类型,该类型将成为结果的类型(有关详细信息,请参见第10.5节)。列表中的NULL值将被忽略。仅当所有表达式的计算结果均为NULL时,结果才为NULL。 请注意,GREATEST和LEAST不在SQL标准中,而是常见的扩展。其他一些数据库使它们在任何参数为NULL时都返回NULL,而不是仅在所有参数都为NULL时才返回…
该GREATEST和LEAST功能中选择任意数量的表达式的列表,最大或最小值。表达式必须全部可转换为通用数据类型,该类型将成为结果的类型(有关详细信息,请参见第10.5节)。列表中的NULL值将被忽略。仅当所有表达式的计算结果均为NULL时,结果才为NULL。
GREATEST
LEAST
请注意,GREATEST和LEAST不在SQL标准中,而是常见的扩展。其他一些数据库使它们在任何参数为NULL时都返回NULL,而不是仅在所有参数都为NULL时才返回…