본문 바로가기

분석70

[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.
[SQL] 주단위 집계 꼭!! 주의해야할 점 (MySql) 쿼리(Query) 작업 시에 주 (Week) 단위로 집계를 해야한다면, 꼭 주의해야할 점이 하나 있다. 그것은 특정 일자가 어느 주에 속하는지에 따라서 다른년도의 주로 잘 못 계산되는 경우가 무척 많기 때문이다. 특히 연의 마지막주와 연의 첫번째 주에서 이 오류를 자주 범하게 된다. 주 번호 (week number) 를 계산하는 방식에는 여러 가지가 있는데, 예를 들어서 매주 월요일이 있는 날짜의 주를 해당 주의 기준으로 본다고 하면, 위 달력에서 22년도 1월 1일과 22년도 1월 2일은 21년도의 52번째 주에 포함이 된다. 즉, 22년 1월 3일부터 22년도 첫번째주 (01주)가 되는 것이다. 그리고 반대의 경우도 발생할 수 있다. 특정 연도의 12월 30일 또는 31일이 다음 년도의 첫번째 주에 .. 2022. 5. 16.
Mysql 샘플링 (Sampling) : 랜덤 추출 Mysql 에서 랜덤(무작위)으로 몇개의 데이터를 추출하는 경우에 사용할 수 있는 쿼리 문장이다. order by 절에 rand() 함수를 적용하면 데이터가 랜덤한 순서로 추출이되면 limit 절로 그 갯수를 정하는 방식이다. Select * From tb_sample Order by rand() Limit 100 위의 쿼리는 tb_sample 이라는 테이블에서 랜덤으로 100개의 raw 를 추출하는 쿼리문장이며, 필요에 따라서 Where 절을 추가할 수 있다. Where 절이 추가되면, 조건이 적용된 데이터중에서 랜덤하게 100개를 추출한다. 2022. 4. 6.
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.
애플뮤직 A/B Test ? 아이폰 또는 아이패드의 설정 홈에서 "Apple Music 6개월 무료 이용" 이라는 메뉴가 보였다가 사라졌다가 또 다시 몇 일 후에 보였다가 한다. A/B 테스트를 하고 있는 듯한 느낌. 무시 하다가 오늘은 그냥 낚여 봄. 애플에서는 신규기기를 구입하면 애플뮤직등을 일정 기간 무료이용할 수 있게 하는데 낚이러 들어갔더니 근 2년전에 샀던 AirPod 구매로 인한 무료 6개월 구독권? 구글 뮤직과 비교해봐야지 ! 2021. 10. 2.
일련번호(날짜) 생성 in Presto 1. 일련번호 생성 select seq from unnest(sequence(1, 10, 1)) as t1(seq) select seq from unnest(sequence(20, 0, -2)) as t1(seq) 2. 일련의 날짜 생성 SELECT dt FROM unnest(SEQUENCE(DATE('2020-06-01'), DATE('2020-06-14'), INTERVAL '1' DAY)) AS t1(dt) SELECT dt FROM unnest(SEQUENCE(DATE('2020-06-01'), DATE('2020-06-14'), INTERVAL '3' DAY)) AS t1(dt) 3. 응용 : 1부터 100까지의 수 중에서 랜덤하게 10개 뽑기 -- 수의 중복 없이 뽑기 select seq fr.. 2021. 4. 20.
M+3 의 재 구매율, M+(1,2,3)의 재 구매율 M+3 의 '재구매율' 이란? 예를 들어 1월의 (신규) 구매자들 중에 4월달에도 재구매를 한 비율을 뜻한다. M+(1,2,3) 의 '재구매율' 이란? 예를 들어 1월의 (신규) 구매자들 중에 2월부터 4월까지 재구매를 한 비율을 뜻한다. 이를 SQL를 이용하여 계산해보도록 하자. 1. 아래와 같이 tbl_uesr, tbl_order 라는 테이블이 있다고 가정합니다. 2. 2019년1월 부터 2019년 12월까지 12개월을 대상으로 'M+3 재구매율' select base_mon.now_dt , count(distinct base_mon.user_id) as cnt_curmon , count(distinct future_mon.user_id) as cnt_nextmon , count(distinct fu.. 2020. 6. 25.
DBeaver 로 AWS Athena 접속하기 1. DBeaver의 데이터베이스 접속 화면에서 Athena 를 검색하여 선택합니다. 2. 선택을 하면 아래 그램과 같이 - Region - S3 location - Access Key - Scret Key 를 입력해줘야 합니다. 3. 위 창의 입력정보를 얻기 위해서는 웹상에서 AWS의 콘솔에 로그인을 합니다. 창의 오른쪽 상단을 보면 Region ('서울'이라고 나와있는)을 선택하는 화면이 있는게 여기서 Region 코드를 얻을 수 있습니다. 버지니아 북부라면 us-east-1 이 리젼이 됩니다. 4. 위의 지역 옆에 내 계정이 나와 있는 부분을 클릭하면 아래와 같이 '내 보안 자격증명'이라는 메뉴가 보입니다. 클릭하여 들어갑니다. 5. 아래와 같은 화면이 나타나는데 '엑세스 키 만들기' 버튼을 클릭하.. 2020. 6. 9.
Python : 위도.경도로 TimeZone 구하기 Python에서 위도와 경도 값으로 TimeZone 구하기 먼저 'timezonefinder' 라는 패키지를 설치하여야 한다. pip install timezonefinder 사용법은 아래와 같이 간단하다. from timezonefinder import TimezoneFinder tf = TimezoneFinder() latitude, longitude = 52.5061, 13.358 tf.timezone_at(lng=longitude, lat=latitude) # returns 'Europe/Berlin' * 만일 아래와 같이 DataFrame에 위.경도의 값이 있다고 하면 from timezonefinder import TimezoneFinder my_func = TimezoneFinder().ti.. 2020. 3. 10.