본문 바로가기

Tech/Database32

PostgreSQL - Record to column 데이터를 추출하면서, 레코드 데이터를 컬럼 데이터로 변환해야 할 때가 많이 있다. Application layer에서 처리할 수 있겠지만 DB Layer에서 처리할 수 있으면 DB 쪽에서 처리하는 것이 맞다고 생각한다. 물론 현재 진행중인 JPA 기반 프로젝트에서는 어쩔 수 없이 Application layer에서 처리해야 한다. 아래 예는 일별 날씨 지표이다. 일별로 온도와 풍속, 강우량 등을 측정하는 테이블로써, 레코드로 데이터가 전개되어 있다. 이를 컬럼으로 전개해보자. CREATE TABLE daily_weather ( reg_date varchar(255) , keywords varchar(255) , val integer ); INSERT INTO daily_weather VALUES ('20.. 2018. 7. 8.
PostgreSQL - Window function AVG(), MAX(), MIN() 등 집약함수를 쓸때, 하나의 결과를 리턴하지만, Over 구문을 사용해서 윈도함수로 쓸 수 있다. 물론 PostgreSQL에만 지원하는 것은 아니고, 대다수의 DBMS에서도 사용할 수 있다.아래 예시는 집약함수를 적용한 값과 Over 구문을 사용해서 윈도함수로 적용한 값의 예이다. CREATE TABLE exam_tab ( user_id varchar(255) , exam_id varchar(255) , score numeric ); INSERT INTO exam_tab VALUES ('USER01', 'A001', 4.0) , ('USER01', 'A002', 5.0) , ('USER01', 'A003', 5.0) , ('USER02', 'A001', 3.0) , (.. 2018. 7. 6.
PostgreSQL - 날짜계산 프로그래밍을 하다가 제일 귀찮은 것 중의 하나가 날짜 데이터 연산이다. 데이터베이스에 저장된 날짜 데이터의 데이터형식이 일률적이면, Application Layer, 또는 DB Layer에서 표준 계산법을 정하면 되지만.. 실상은 그렇지 않다. 이래서 표준 도메인을 강조하는가 보다.PostgreSQL에서 날자 계산하는 방법은 아래와 같다. 이 예제는 문자 데이터값 기준이다. 날짜 컬럼의 데이터라면 또 다를 수 있다. 사용법이 다른 dbms보다는 조금 특이한듯 하다. CREATE TABLE members ( user_id varchar(255) , regdate varchar(255) , birthday varchar(255) ); INSERT INTO members VALUES ('USER01', '20.. 2018. 7. 6.
PostgreSQL - ABS, POWER, SQRT, POINT 함수 절대값을 계산할 때는 ABS함수를 사용한다. 예를 들어, -2와 +2 라는 값을 + 연산을 하게 되면, 0이지만, 이 두 값 간의 차이값.. 즉 절대값을 구해야할 때가 있다. 두 지점의 거리라든지... 그런 경우엔 ABS함수를 활용할 수 있다. CREATE TABLE location1 ( x1 integer , x2 integer ); INSERT INTO location1 VALUES ( 5 , 10) , (10 , 5) , (-2 , 4) , ( 3 , 3) , ( 0 , 1) ; select ABS(x1 - x2) as 절대값 from location1; 결과는 아래와 같다. 제곱근을 구할 때, SQRT 함수를 쓴다. 제곱근이 뭔지 모른다고?? 괜찮다. 모를 수 있다. 25의 제곱근은 5이다. 5가.. 2018. 7. 6.
반응형