반응형

SQL & DB/PostgreSQL 28

[SQL] 부정 논리 연산자(not in 등) 과 Null의 관계

실무에서 SQL쿼리를 사용하다 보면 Where 조건에 in과 not in 조건을 많이 사용할 텐데, not in(부정 논리 연산자)을 사용할때 주의하여야 한다. 그 이유는 NULL 때문이다.부정연산자부정 논리 연산자의 경우 위 표처럼 같지 않은 경우를 필터링할 때 사용하는 연산자이다.주로 not in이나 '', '!=' 등을 많이 사용한다. 부정 연산자와 Null의 관계결론부터 말하자면 부정 연산자를 사용하면 Null값이 모두 누락되게 된다.예시를 확인해보자 (샘플데이터 쿼리는 포스팅 최하단에 있음)SELECT * FROM orders WHERE 1=1 AND product_id not in (101,102)원래 의도는 product_id가 101,102인 것만 제외하고 조회하고 싶..

SQL & DB/PostgreSQL 2024.07.08

[PostgreSQL] Json(Jsonb) 컬럼 Query 방법 (->, ->>과 json_array_elements)

이번 포스팅에서는 PostgreSQL에서 Json(Jsonb)로 이루어진 컬럼을 Query 하는 방법을 알아봅니다. Json과 Jsonb의 차이Json의 특징입력된 텍스트의 원본을 그대로 저장 Json은 데이터를 불러올때 입력된 텍스트를 파싱해야하기 때문에 시간이 오래 걸림원본을 그대로 저장하기에 의미없는 공백등을 저장Json 객체 내의 key 순서가 보장되며, 중복된 key가 있는 경우도 중복되어 저장Jsonb의 특징Jsonb는 분해된 바이너리 형식으로 저장 (데이터를 정제하여 저장)Jsonb는 파싱할 필요가 없기 때문에 시간이 적게 걸림공백을 저장하지 않음객체들의 key순서를 보장하지 않으며, key를 중복해서 저장하지 않음. 입력에 중복된 key가 지정된 경우 마지막 값으로 대체객체들의 key순서를..

SQL & DB/PostgreSQL 2024.07.07

[PostgreSQL] generate_series을 활용한 날짜/시간 더미 데이터 생성 (월단위, 일단위, 시간단위)

날짜/시간 더미 데이터 생성이번 포스팅에서는 postgresql에서 generate_series 함수를 활용하여 날짜 및 시간 더미 데이터를 생성하는 방법을 알아봅니다.generate_seriesgenerate_series (start,stop[,step])일련의 숫자를 생성하는 함수. 시작과 끝, 증가 단계를 설정할 수 있음start : 시작 값입니다.stop : 시리즈의 끝값.step : 각 연속 숫자 사이의 증분 값. 선택 사항이며, 기본값은 1예시)SELECT generate_series(1, 10) as cnt 월 단위 데이터 더미 생성 (year-month)2024년 1월부터 12월까지의 더미 데이터 생성"generate_series(0,11)"을 활용하여 0부터 11까지 sequence를 생..

SQL & DB/PostgreSQL 2024.06.30

[PostgreSQL] PostgreSQL의 특징과 장단점

PostgreSQL이란 오픈소스로 개발된 관계형 데이터베이스 ( ORDBMS) 다양한 영역에서 활용되고 있으며, 오라클/MySQL/MsSQL다음으로 많이 사용되는 RDBMS PostgreSQL 특징 1. 라이센스 비용이 전혀 들지 않음 PostgreSQL은 BSD(Berkeley Software Distribution) 라이센스를 활용하여 개발되었음 PostgreSQL은 자유로운 오픈 소스 라이선스를 통해 원하는 대로 DBMS를 사용, 수정 및 배포할 수 있음 따라서 데이터 volume가 커지더라도 라이센스 문제가 없기에, 기업에서는 부담이 전혀 없음 CF) BSD(Berkeley Software Distribution) BSD는 미국 캘리포니아 대학교 버클리의 CSRG(Computer System Re..

SQL & DB/PostgreSQL 2023.12.08

[PostgreSQL/MYSQL] 날짜/시간 계산(INTERVAL타입, age함수) (DATEDIFF, TIMESTAMPDIFF)

DATASET QUERYDROP TABLE IF EXISTS mst_users_with_dates;CREATE TABLE mst_users_with_dates ( user_id varchar(255) , register_stamp varchar(255) , birth_date varchar(255));INSERT INTO mst_users_with_datesVALUES ('U001', '2020-02-28 10:00:00', '2000-02-29') , ('U002', '2020-02-29 10:00:00', '1992-03-29') , ('U003', '2020-03-01 10:00:00', '2002-01-29') , ('U004', '2020-03-01 11:..

SQL & DB/PostgreSQL 2023.11.24

[PostgreSQL] CSV File를 Table에 삽입(Import)하기.

PostgreSQL에서 CSV File를 Table에 삽입(Import)하기.CSV파일을 PostgreSQL에 삽입하는 방법은 다음과 같습니다.먼저 데이터를 다운로드합니다. 그리고 데이터를 넣을 데이블을 만들어줍니다.DROP TABLE IF EXISTS sale_data;CREATE TABLE sale_data ( order_id SERIAL, date DATE, category VARCHAR(50), itemcode integer, price integer, amount integer, Primary KEY(order_id)); 데이블을 만들어 준후 CSV파일을 IMPORT하는 방법은 PSQL을 이용하는 것과 PgAdmin 기능을 이용하는 2가지 방법이 있습니다. PSQL로 CSV파일 IM..

SQL & DB/PostgreSQL 2023.03.05

[PostgreSQL] 중복행 제거

PostgreSQL에서 중복을 제거하는 방법은 다음과 같습니다. 로직의 원리는 중복되지 않는 데이터의 id만을 필터링해서 해당 id가 아닌 id를 제거하는 로직입니다. 1. 중복 제거하고자 하는 컬럼들만 group by 해서 가장 앞의 id만 남기는 로직 DELETE FROM table_name WHERE id NOT IN ( SELECT MIN(id) FROM table_name GROUP BY column_name ); 2. 중복 제거하고자 하는 컬럼들을 기준으로 rank를 매긴 다음에, 가장 앞의 id만 남긴다. DELETE FROM table_name WHERE id IN ( SELECT T.id FROM ( SELECT id , ROW_NUMBER() OVER(PARTITION BY column..

SQL & DB/PostgreSQL 2023.02.18

[PostgreSQL] 사용자 로그데이터(Log Data) 시계열분석(2) - 행동(action)과 지속률/정착률과의 관계 분석

로그데이터 매출 분석은 아래 포스팅들을 참고해주세요 1. 사용자 로그데이터(Log Data) 매출분석(1) - 사용자들의 특징 찾기 : ysyblog.tistory.com/146?category=1176025 2. 사용자 로그데이터(Log Data) 매출분석(2) - DECILE분석 : ysyblog.tistory.com/147?category=1176025 3. 사용자 로그데이터(Log Data) 매출분석(3) - RFM 분석 : ysyblog.tistory.com/148?category=1176025 4. 사용자 로그데이터(Log Data) 시계열분석(1) - 등록추이분석/지속률/정착률 : ysyblog.tistory.com/149 지속과 정착에 영향을 주는 액션 집계 지난 포스팅에서 살펴본 지속률과..

SQL & DB/PostgreSQL 2021.01.22

[PostgreSQL] 사용자 로그데이터(Log Data) 시계열분석(1) - 등록추이분석/지속률/정착률

이번포스팅은 로그데이터를 시계열로 분석하는 포스팅입니다. 로그데이터 매출 분석은 아래 포스팅들을 참고해주세요 1. 사용자 로그데이터(Log Data) 매출분석(1) - 사용자들의 특징 찾기 : ysyblog.tistory.com/146?category=1176025 2. 사용자 로그데이터(Log Data) 매출분석(2) - DECILE분석 : ysyblog.tistory.com/147?category=1176025 3. 사용자 로그데이터(Log Data) 매출분석(3) - RFM 분석 : ysyblog.tistory.com/148?category=1176025 데이터 소개 및 Import 먼저 데이터를 데이터베이스에 Import합니다. 사용자데이터와 로그데이터는 이전에 썻던 데이터와 유사하지만, 효과적인..

SQL & DB/PostgreSQL 2021.01.18
반응형