반응형
PostgreSQL의 최대값, 최소값을 구하는 함수는 greatest, least 이다. 다른 dbms의 MAX함수나 MIN함수처럼 함수명이 직관적이긴 한데, 굳이 이렇게 네이밍을 했어야 하나하는 생각은 든다.
정정 : 다시 확인해봤는데, postgreSQL에서 MAX, MIN과 GREATEST, LEAST의 사용법은 엄연히 다르다. MAX, MIN은 레코드중에서 최대/최소값을 구하는 것이고, GREATEST, LEAST는 여러 컬럼 값 중에서 최대/최소값을 구하는 것이다.
--3을 반환한다. select greatest(1, 2, 3) ; --quart_sales의 분기2 레코드의 최대/최소값을 반환한다. select MAX(분기2), MIN(분기2) from quart_sales;
SIGN 함수는 매개변수가 양수라면 1, 0일 땐 0, 음수라면 -1을 리턴하는 함수이다. 집계 쿼리에서 여러 레코드에 걸쳐 있는 값을 비교할 때, 매우 유용하게 사용할 수 있다.
아래는 테스트 데이터.
CREATE TABLE quart_sales ( 사업연도 integer , 분기1 integer , 분기2 integer , 분기3 integer , 분기4 integer ); INSERT INTO quart_sales VALUES (2015, 82000, 83000, 78000, 83000) , (2016, 85000, 85000, 80000, 81000) , (2017, 92000, 81000, NULL , NULL ) ;
기업의 재무제표 데이터의 집계 쿼리를 구할 때, 아래와 같은 예는 매우 유용하게 활용될 수 있다.
1. 분기별 매출 증감
SELECT 사업연도 , 분기1 , 분기2 , CASE WHEN 분기1 <분기2 THEN '+' WHEN 분기1 = 분기2 THEN ' ' ELSE '-' END AS 분기2_분기1_증감 , 분기2 - 분기1 as 분기2_분기1_차이 , SIGN(분기2-분기1) as 분기2_분기1_SIGN FROM quart_sales
결과는 아래와 같다.
2. 연간 4분기 매출 계산(Coalesce와 Sign 함수 활용)
SELECT 사업연도 , (COALESCE(분기1, 0) + COALESCE(분기2, 0) + COALESCE(분기3, 0) + COALESCE(분기4, 0)) / (SIGN(COALESCE(분기1, 0)) + SIGN(COALESCE(분기2, 0)) + SIGN(COALESCE(분기3, 0)) + SIGN(COALESCE(분기4, 0))) as 사업연도매출평균 FROM quart_sales
결과는 아래와 같다.
반응형
'Tech > Database' 카테고리의 다른 글
PostgreSQL - ABS, POWER, SQRT, POINT 함수 (2) | 2018.07.06 |
---|---|
Transaction의 이해 - PostgreSQL (0) | 2018.07.04 |
PostgreSQL - COALESCE 함수 활용 (0) | 2018.07.03 |
PostgreSQL - 도메인 추출 쿼리 (0) | 2018.07.03 |
MS-SQL Command start with admin privilege (0) | 2018.06.04 |
댓글