나는 A, B, C and D
열을 가지고 있으며 MAX(COLUMN_A, COLUMN_B)/MAX(COLUMN_C, COLUMN_D)
으로 계산 된 열을 새로 만들고 싶습니다. Coalesce 및 Max를 사용하여 null이 아닌 최대 값의 열을 추출하는 방법
이 컬럼의 행의 일부
또한 내가 당신이 목적을 위해least()
및
greatest()
을 사용할 수 있습니다 임팔라 또는 SQL
나는 A, B, C and D
열을 가지고 있으며 MAX(COLUMN_A, COLUMN_B)/MAX(COLUMN_C, COLUMN_D)
으로 계산 된 열을 새로 만들고 싶습니다. Coalesce 및 Max를 사용하여 null이 아닌 최대 값의 열을 추출하는 방법
이 컬럼의 행의 일부
또한 내가 당신이 목적을 위해least()
및
greatest()
을 사용할 수 있습니다 임팔라 또는 SQL
에서이 작업을 수행 할 수있는 방법, NULL 값이 있습니다. NULL
무시 :
select greatest(a, b)/greatest(c, d)
문제는 NULL
값입니다. 어떤 인수가 NULL
이면이 함수는 NULL
을 반환한다고 생각합니다. 이 구조를 사용하여, 두 개의 값으로,
select greatest(coalesce(a, 0), coalesce(b, 0))/greatest(coalesce(c, 0), coalesce(d, 0))
을 또는 : 값이 긍정적 인 것으로 알려진 경우 0 NULL
을 대체 할 수 있습니다 (
select greatest(coalesce(a, b), coalesce(b, a))/greatest(coalesce(c, d), coalesce(d, c))
'가장 큰 것을 선택 (coalesce (a, 0), coalesce (b, 0))/최대 (coalesce (c, 0), coalesce (d, 0))'하는 경고는 열의 값이 모두 양수 번호. '가장 큰 것을 선택 (coalesce (a, b), coalesce (b, a))/가장 중대한 (coalesce (c, d), coalesce (d, c))'하는 경고는 모든 컬럼이 nullable이 아님을 의미합니다. – Peter4499
@ Peter4499. . . 즉, 0으로 나누기에주의해야 할 수도 있지만 어느 경우 든 솔루션이 작동해야합니다. –
일부 샘플 테이블 데이터를 추가 포함 널 (null)의과 0 ')와 예상 결과를 비교합니다. – jarlh