여러 개 값 조작
1. 문자열 연결하기
CONCAT
함수나 ||
연산자를 사용한다.
SELECT user_id,
-- redshift에서는 매개변수 2개까지 밖에 안되기때문에 ||를 사용하여 연결하는것이 좋음
CONCAT(pref_name, city_name) AS pref_city,
pref_name || city_name AS pref_city
FROM mst_user_location
2. 여러 개 값 비교하기
4분기 매출 테이블에서 분기별 매출 증감을 판정하는 예제
SELECT year, q1, q2,
-- q1, q2 매출 변화 평가
CASE WHEN q1 < q2 THEN '+'
WHEN q2 = q2 THEN ' '
ELSE '-'
END AS judge_q1_q2,
--q1, q2 매출액 차이 계산
q2 - q1 AS diff_q2_q1,
--q1, q2의 매출 변화를 1, 0, -1로 표현
SIGN(q2 - q1) AS sign_q2_q1
FROM quarterly_sales
ORDER BY year
연간 최대/최소 4분기 매출 찾기 예제
SELECT year,
-- q1~q4 최대 매출 구하기
greatest(q1,q2,q3,q4) AS greatest_sales,
-- 최소 매출
least(q1,q2,q3,q4) AS least_sales
FROM quarterly_sales
ORDER BY year
연간 평균 4분기 매출 계산 예제
SELECT year,
(q1 + q2 + q3 + q4) / 4 AS average
FROM quarterly_sales
ORDER BY year
NULL 값을 사칙연산하려면 COALESCE
함수를 사용해야한다.
대신 평균을 구할 때, 0으로 변환하게 되면 평균 값이 크게 낮아지게 된다.
SELECT year,
(COALESCE(q1, 0)+COALESCE(q2, 0)+COALESCE(q3, 0)+COALESCE(q4, 0)) / 4 AS average
FROM quarterly_sales
ORDER BY year
만약 NULL이 아닌 값으로면 평균을 구하려면 NULL이 아닌 컬럼 수만 세서 나눠야한다.
SIGN
함수가 양수이면 1, 0이면 0, 음수이면 -로 표시하기 떄문에 이를 사용해서 NULL을 0으로 대치한 후, 0이 아닌 컬럼만 세서 평균을 구할 수 있다.
SELECT year,
(COALESCE(q1, 0)+COALESCE(q2, 0)+COALESCE(q3, 0)+COALESCE(q4, 0)) /
(SIGN(COALESCE(q1, 0)) + SIGN(COALESCE(q2, 0)) + SIGN(COALESCE(q3, 0)) + SIGN(COALESCE(q4, 0))) as average
FROM quarterly_sales
ORDER BY year
'Data Science' 카테고리의 다른 글
ABC 분석 (0) | 2022.02.02 |
---|---|
실무 SQL 공부 3-3 - 데이터 가공 SQL (2) | 2022.01.22 |
실무 SQL 공부 3-1 - SQL로 데이터 가공 (0) | 2022.01.15 |
실무 SQL 공부 2 - 데이터 (0) | 2022.01.15 |
실무SQL공부 1 - 미들웨어 시스템 (0) | 2022.01.15 |