와일드카드 매칭 LIKE vs ILIKE LIKE는 대소문자를 구분하며, ILIKE는 대소문자를 구분하지 않는다. LIKE SELECT COUNT(*) FROM ufo WHERE description LIKE '%wife%'; SELECT COUNT(*) FROM ufo WHERE LOWER(description) LIKE '%wife%...
텍스트 변환
Shape Shape만을 추출해낸다. 문자의 첫 글자를 대문자로 변환한다. SELECT DISTINCT shape, INITCAP(shape) AS shape_clean FROM ( SELECT SPLIT_PART(SPLIT_PART(sighting_report, 'Duration', 1), 'Shape: ', 2) AS shape...
텍스트 파싱
Occurred SELECT LEFT(sighting_report, 8) AS left_digits, COUNT(*) FROM ufo GROUP BY 1; SELECT RIGHT(LEFT(sighting_report, 25), 14) AS occurred FROM ufo split_part SELECT SPLIT_PART(sighti...
텍스트 분석
텍스트 분석 UFO 목격 보고 데이터 셋을 사용하여 분석한다. SELECT * FROM ufo; sighting_report 글자 수대로 그루핑하였을 때 각각에 해당하는 record 수를 계산한다. SELECT LENGTH(sighting_report), COUNT(*) AS records FROM ufo GROUP BY 1 ORDER BY...
관련 코호트 분석 - 누적 계산
누적 계산 id별로 term sart를 오름차순 했을 때 첫 번째 term type값 id별로 가장 작은 term start 날짜 id별로 가장 작은 term start 날짜 + 10년 legislators_term 테이블 JOIN B 테이블의 term start가 A 테이블의 first term과 10년 후 사이에 있는 날짜 ...
관련 코호트 분석 - 리턴십(반복 구매 행동)
term type이 rep인 id별 first term 날짜 SELECT id_bioguide, MIN(term_start) AS first_term FROM legislators_terms WHERE term_type = 'rep' GROUP BY 1; century별 몇 명인지? 위 쿼리를 서브쿼리로 사용한다. century별 i...
관련 코호트 분석 - 생존자
id별 첫 임기 시작날짜와 마지막 임기 시작 날짜 SELECT id_bioguide, MIN(term_start) AS first_term, MAX(term_start) AS last_term FROM legislators_terms GROUP BY 1 tenure 계산 SELECT id_bioguide, MIN(term_start)...
리텐션 - 다른 날짜를 기준으로 코호트 정의
처음 날짜 대신 다른 날짜를 기준으로 코호트 정의 이전에는 각 id별 첫 번째 임기 시작 날짜를 기준으로 코호트를 정의했다. 이번에는 처음 날짜 대신 다른 날짜를 기준으로 코흐트를 정의한다. term_start가 2000-12-31보다 작고 term_end가 2000-01-01보다 큰 id, type별 min_start term_s...
리텐션 - 희소 코호트 다루기
ID별 첫 번째 임기 시작 날짜와 state SELECT DISTINCT(id_bioguide), MIN(term_start) OVER(PARTITION BY id_bioguide) AS first_term, FIRST_VALUE(state) OVER(PARTITION BY id_bioguide ORDER BY term_start) AS firs...
[PostgreSQL] generate_series
generate_series 사용법은 다음과 같다. SELECT generate_series AS 별칭 FROM generate_series(start, stop, step) 만약 다음과 같은 쿼리를 작성했을 경우의 결과를 알아보자. SELECT generate_series AS period FROM generate_series(0, 10, 1...