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


140

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

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 ()은 열이 아닌 에서 작동하는 것으로 보입니다 .

내가 시도하는 것을 할 수 있습니까?

답변:


246

최소 (a, b) :

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

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


20
나 같은 MAX()두 가지 가치를 필요 로 하는 사람들의 경우 , 그것은 GREATEST(a, b):)
vektor


-16

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

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

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


단지 min(expression)기존된다. doc에서 정의 : expression이있는 모든 입력 값에서 표현의 최소값은 숫자, 문자열, 날짜 / 시간, 네트워크 또는 열거 형 유형 또는 이러한 유형의 배열입니다.
charlesdg
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.