[SQL] 데이터 PIVOT 하기 (presto, athena)
위 그림에서 파란색의 화살표와 같이 속성(attributtes)과 값(values) 들이 쌓여있는 형태에서, 속성들을 열(컬럼)의 형태로 변형하는 것을 피봇(pivot) 한다고 얘기한다. 그리고 그 반대의 과정을 언피봇(unpivot) 한다고 얘기한다. 이 포스팅에서는 presto (또는 athena) 에서 SQL로 피봇하는 것을 성명하려고 한다. (1) 아래와 같은 형태의 테이블이 있다. 실행을 위해서 sql 로 데이터를 아래와 같이 만들었다. with list (user_id, subject, score) as ( values (1, '국어', 90) , (1, '영어', 85) , (1, '수학', 60) , (2, '국어', 100) , (2, '영어', 50) , (2, '수학', 75) , (..
2022. 6. 9.
[redash] 쿼리에서 필터 사용법 (filter, multi-filter)
본 글은 redash(리대시)에서 필터(drop-down list) 사용법에 관한 내용이다. 리대시에서는 drop-down list 를 사용할 때, (1) {{파라메터명}} 의 형식으로 사용되는 파라메터를 filter 로 사용하는 방식이 있고 (2) 쿼리문장에서 쿼리결과의 내용을 중심으로 필터를 사용할 수 있다. 이 글에서는 두 번째 방법인 쿼리문장에서 필터를 사용하는 방법에 대해서 설명할 것이고, 단순 선택 필터와 멀티 선택 필터 이렇게 두 가지 방법에 대해서 알아볼 것이다. 아래와 같이 list 라는 이름의 테이블이 있다고 가정하자. with list(uid, area, age_band) as ( values (1, '서울', '10대'), (2, '서울', '20대'), (3, '경기', '30대'..
2022. 6. 7.
[SQL] 날짜 차이 계산하기 (presto, athena)
Presto (또는 athena)에서 날짜 차이를 구하는 방법에 대해서 알아보자. 기본적으로 date_diff 라는 함수를 사용한다. date_diff( 'unit', '시작일자', '종료일자') 의 형식으로 사용하는데, 여기서 'unit'에 따라서 차이를 일단위로 계산할지 또는 월단위로 계산할지 등등을 정할 수 있다. unit 으로는 'YEAR', 'QUARTER', 'MONTH', 'WEEK', 'DAY', 'HOUR' , 'MINUTE', 'SECOND' 등을 사용할 수 있다. select date_diff('day', date('2022-01-01'), date('2022-02-01')) --> 결과 : 31 한가지 주의할 점은 '시작일자' 와 '종료일자'가 날짜 형식의 타입이어야 한다. date..
2022. 5. 23.
MySQL 날짜/시간 함수
mysql 날짜/시간 함수 정리 -- 현재시간 날짜 구하기 select now(), current_date, current_time -- 날짜 더하고 빼기 select now(), date_add(now(), interval 1 day) select now(), date_add(now(), interval 4 hour) select now(), date_sub(now(), interval 1 day) select now(), date_sub(now(), interval 4 hour) -- 두 시간의 차이 select timestampdiff(MONTH, now(), date_add(now(), interval 4 month)) 시간주기에 아래의 단위를 사용할 수 있다. SECOND : 초 MINUTE :..
2022. 3. 29.