[sql] Postgres에서 두 필드의 MIN ()을 어떻게 얻습니까?

다음과 같은 테이블이 있다고 가정 해 봅시다.

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) :

GREATESTLEAST기능은 표현의 수의 목록에서 가장 큰 또는 작은 값을 선택합니다. 표현식은 모두 공통 데이터 유형으로 변환 할 수 있어야하며 이는 결과 유형입니다 (자세한 내용 은 10.5 절 참조). 목록의 NULL 값은 무시됩니다. 모든 표현식이 NULL로 평가되는 경우에만 결과가 NULL이됩니다.

참고 GREATESTLEASTSQL 표준에 있지 않은,하지만 일반적인 확장이다. 일부 다른 데이터베이스는 모든 인수가 NULL 일 때뿐 아니라 인수가 NULL 인 경우 NULL을 반환합니다


답변

LEAST()PostgreSQL 의 함수에 대한 문서 링크는 다음과 같습니다 .

http://www.postgresql.org/docs/current/static/functions-conditional.html#AEN15582


답변

해당 데이터를 다음과 같은 열에 넣으면 답을 얻을 수 있습니다.

SELECT name, MIN(score_a, score_b) as minimum_score
FROM table

여기서는 중에서 최소값을 가하고 score_ascore_b명명 된 컬럼에 그 값을 저장하여이를 인쇄 minimum_score.


답변