[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) :
GREATEST
및LEAST
기능은 표현의 수의 목록에서 가장 큰 또는 작은 값을 선택합니다. 표현식은 모두 공통 데이터 유형으로 변환 할 수 있어야하며 이는 결과 유형입니다 (자세한 내용 은 10.5 절 참조). 목록의 NULL 값은 무시됩니다. 모든 표현식이 NULL로 평가되는 경우에만 결과가 NULL이됩니다.참고
GREATEST
및LEAST
SQL 표준에 있지 않은,하지만 일반적인 확장이다. 일부 다른 데이터베이스는 모든 인수가 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_a
및 score_b
명명 된 컬럼에 그 값을 저장하여이를 인쇄 minimum_score
.