본문 바로가기

PostgreSQL18

[PostgreSQL] ALTER TABLE RENAME COLUMN IF EXISTS PostgreSQL에서 존재할 경우에 실행하기 위해 IF EXISTS를 사용하는데 RENAME COLUMN에 경우 IF EXISTS를 지원하지 않는다. 그래서 DO문법을 활용해서 비슷하게 동작하게 만들 수 있습니다. DO $$ BEGIN IF EXISTS(SELECT * FROM information_schema.columns WHERE table_name='테이블명' and column_name='존재 체크할 컬럼명') THEN ALTER TABLE "public"."테이블명" RENAME COLUMN "존재 체크할 컬럼명" TO "변경할 컬럼명"; END IF; END $$; References [postgresql tutorial]: https://www.postgresqltutorial.com/p.. 2023. 9. 4.
[PostgreSQL] 시퀀스 초기화 시퀀스 초기화 setval SELECT setval('table_seq', 1); -- nextval(table_seq') = 2 SELECT setval('table_seq', 1, true); -- nextval(table_seq') = 2 SELECT setval('table_seq', 1, false); -- nextval(table_seq') = 1 첫번째 인자 (필수) : 적용 할 시퀀스 이름 두번째 인자 (필수) : 적용 할 시퀀스 값 세번째 인자 (옵션) : 시퀀스 값 포함 여부 ( 기본값: true ) References [PostgreSQL docs]: https://www.postgresql.org/docs/current/functions-sequence.html 9.17. Seque.. 2023. 8. 11.
[PostgreSQL] Update Multiple Columns From Select Sub Query members, users, user_infos 이렇게 3개 테이블이 있다라고 가정을 하겠습니다. users에 있는 컬럼값과 user_infos에 있는 컬럼값을 members에 update를 하고 싶을 때 아래와 같이 사용할 수 있습니다. UPDATE members AS m SET phone = temp_users.phone, address = temp_users.address, mname = temp_users.uname FROM ( SELECT u.name, ui.address ui.phone FROM users u LEFT JOIN user_infos ui ON ui.user_id = u.id ) AS temp_users WHERE m.user_id = temp_users.id; 2023. 6. 28.
[PostgreSQL] 현재 시퀀스 마지막 값 조회하기 SELECT pg_sequence_last_value('스키마명.시퀀스명'); 예시 SELECT pg_sequence_last_value('public.users_id_seq'); 2023. 6. 5.
[PostgreSQL] Update Multiple Columns From Select members라는 테이블과 users라는 테이블이 이렇게 2개 있다라고 가정을 하겠습니다. users에 있는 컬럼값을 members에 update를 하고 싶을 때 아래와 같이 사용할 수 있습니다. UPDATE members AS m SET phone = u.phone, address = u.address, mname = u.uname FROM users AS u WHERE m.user_id = u.id; 2023. 5. 9.
[PostgreSQL] 가장 최근 날짜, 점수별 건수, 점수 평균 구하기 예시 테이블 구조 ( 테이블명: scores ) 학생이름 (컬럼명: student_name / 타입: varchar) 점수 (컬럼명: score / 타입: smallint) 거래일자 (컬럼명: exam_date / 타입: date) 홍길동 90 2023-04-28 최근날짜 기준 1~50 건수, 50 ~ 100 건수, 점수 평균 WITH count_scores AS ( SELECT COUNT(CASE WHEN score > 1 AND total_score 50 AND total_score 2023. 5. 3.
[PostgreSQL] 다중 컬럼 평균 구하기 (Average Multiple Columns) 특정 일자까지 건수를 구한 다음 평균을 구해야하는 경우가 있었습니다. 예시 테이블 구조 ( 테이블명: trades ) 거래금액 (컬럼명:amount / 타입: bigint) 거래일자 (컬럼명: trade_date / 타입: date) 10,000 2023-04-28 * 해당 예시 테이블은 실제 운영하는 서비스와 전혀 상관없는 참고용 예시 테이블입니다. 특정기간 특정금액 구간 건수 SELECT (SELECT COUNT(*) FROM trades WHERE amount > 0 AND amount = '2022-04-28' AND trade_date 1000 AND amount = '2022-04-28' AND trade_date 2000 AND amount = '2022-04-28' AND trade_dat.. 2023. 4. 28.
[PostgreSQL] DATE_TRUNC 활용 (연간, 월간, 주간 / 합산, 평균) DATE_TRUNC 지정된 날짜 기준으로 값을 자르고 타임스탬프(timestamp) 또는 간격(interval)을 반환하는 함수입니다. 예제 여기에 아래와 같은 금액 테이블(amounts)이 있다고 가정하시고 보시면 되겠습니다. 날짜 (컬럼명: trade_date / 타입:date) 금액 (컬럼명: amount / 타입:bigint) 2023-04-26 100,000 연간 합산 평균 SELECT date_trunc( 'year', trade_date), sum(amount), avg(amount) FROM amounts GROUP BY date_trunc( 'year', trade_date) 월간 합산 평균 SELECT date_trunc( 'month', trade_date), sum(amount), .. 2023. 4. 26.
[PostgreSQL] COALESCE null to 0 사용방법 SELECT COALESCE(column, 0); 예제 SELECT COALESCE(null, 0); -- 0 [PostgrSQL Tutorial COALESCE]: https://www.postgresqltutorial.com/postgresql-tutorial/postgresql-coalesce/ PostgreSQL COALESCE Summary: in this tutorial, you will learn about the PostgreSQL COALESCE function that returns the first non-null argument. You will learn how to apply this function in SELECT statement to handle null valu.. 2023. 4. 24.
[PostgreSQL] DATE_PART 사용하기 DATE_PART는 날짜 또는 시간 값에서 하위 필드를 추출하는 함수입니다. 추출 1. 연 SELECT DATE_PART('year', TIMESTAMP '2023-04-13'); -- 2023 2. 월 SELECT DATE_PART('month', TIMESTAMP '2023-04-13'); -- 4 3. 일 SELECT DATE_PART('day', TIMESTAMP '2023-04-13'); -- 13 4. 시분초 SELECT date_part('hour',TIMESTAMP '2023-04-18 12:34:56') h, date_part('minute',TIMESTAMP '2023-04-18 12:34:56') m, date_part('second',TIMESTAMP '2023-04-18 12:34.. 2023. 4. 13.
[PostgreSQL] 월 차이 계산 1. DATE_PART DATE_PART는 날짜 또는 추출하는 함수인데 추출을 활용해서 월 차이를 알 수 있습니다. * 같은 연도일 경우에만 활용가능합니다. 월 차이 계산 예제 SELECT DATE_PART('month', '2023-04-12'::timestamp) - DATE_PART('month', '2023-02-12'::timestamp); -- 2 2. EXTRACT + AGE - EXTRACT: 날짜부분을 추출하는 함수입니다. SELECT EXTRACT('DAY' from '2023-02-03 15:23:22.23242'::timestamp); -- 3 - AGE: 나이를 구하는 함수 첫번째 인수에서 두번째 인수를 뺀 결과를 반환합니다. SELECT AGE(TIMESTAMP '2023-04-.. 2023. 4. 13.
[PostgreSQL] with문 사용하기 (CTE) 1. WITH Queries (Common Table Expressions) with 쿼리는 공통 테이블 표현식이라고 합니다. 임시 테이블을 정의해서 보다 많은 쿼리를 보조할 때 사용합니다. 2. 사용 방법 WITH [임시 테이블명] AS ( SELECT * FROM [테이블명] ) SELECT * FROM [임시 테이블명]; 다중 WITH [임시 테이블명] AS ( SELECT * FROM [테이블명] ), [임시 테이블명2] AS ( SELECT * FROM [테이블명] ) SELECT * FROM [임시 테이블명] LEFT OUTER JOIN [임시 테이블명2] ON T1.id = T2.id 재귀 WITH [임시 테이블명] AS ( SELECT * FROM [테이블명] ), [임시 테이블명2] AS.. 2023. 4. 12.