반응형

SQL & DB/PostgreSQL 25

[PostgreSQL] 카테고리별 매출 파악(ABC분석, 매출변화율, 도수분포표(히스토그램))

이번포스팅에서는 카테고리별 매출을 파악하는 것을 해보겠습니다. - 분석할 데이터와 데이터를 DB에 import하는 방법은 아래 링크에서 보실 수 있습니다. ysyblog.tistory.com/143 [PostgreSQL] CSV File를 Table에 삽입(Import)하기. CSV파일을 PostgreSQL에 삽입하는 방법은 다음과 같습니다. 먼저 데이터를 다운로드합니다. 그리고 데이터를 넣을 데이블을 만들어줍니다. DROP TABLE IF EXISTS sale_data; CREATE TABLE sale_data ( order_id S.. ysyblog.tistory.com - 매출 시계열 분석은 아래 링크에서 보실 수 있습니다. ysyblog.tistory.com/144 [PostgreSQL] 매출데이..

SQL & DB/PostgreSQL 2021.01.11

[PostgreSQL] 매출데이터 시계열 분석하기(이동평균분석, 월별, Z차트분석)

이번 포스팅에서는 매출데이터를 시계열 분석해보겠습니다. 분석할 데이터와 데이터를 DB에 import하는 방법은 아래 링크에서 보실 수 있습니다. ysyblog.tistory.com/143 [PostgreSQL] CSV File를 Table에 삽입(Import)하기. CSV파일을 PostgreSQL에 삽입하는 방법은 다음과 같습니다. 먼저 데이터를 다운로드합니다. 그리고 데이터를 넣을 데이블을 만들어줍니다. DROP TABLE IF EXISTS sale_data; CREATE TABLE sale_data ( order_id S.. ysyblog.tistory.com 날짜별 매출 분석 날짜별로 매출과 평균구매액을 집계하는 쿼리입니다. select date ,count(*) as purchase_count ,..

SQL & DB/PostgreSQL 2021.01.11

[PostgreSQL] CTE (WITH 절)

SQL문이 복잡해지면 서브쿼리의 중첩이 많아지는데 이렇게 되면 가독성이 많이 떨어지게 됩니다. 이때 공통 테이블 식(CTE : common table expression)을 사용하면 임시로 테이블을 정의하고 재활용할 수 있습니다. 이때 사용하는 것이 WITH문입니다. WITH문 WITH문의 구조는 다음과 같습니다. WITH (테이블 이름) AS (SELECT ~ FROM ~) SELECT ~ DATASET QUERY DROP TABLE IF EXISTS categories_sales; CREATE TABLE categories_sales ( category_id integer , name varchar(255) , sales_amount integer ); INSERT INTO categories_sal..

SQL & DB/PostgreSQL 2021.01.08

[PostgreSQL] 테이블 가로 결합(JOIN) (LEFT JOIN, RIGHT JOIN, FULL JOIN, CROSS JOIN)

JOIN을 활용하여 두개 이상의 테이블을 가로로 결합할 수 있습니다. ON t1.column1 = t2.column1 이런식으로 조인해줄 칼럼을 지정해주면 됩니다. JOIN의 종류 - (INNER) JOIN : Table1과 Table2에서 값이 같은 행만 반환 - LEFT (OUTER) JOIN : JOIN 왼쪽에 있는 Table1의 모든 결과를 가지고 온 후 Table2와 매칭하며, 매칭되는 데이터가 없을 경우 NULL값 삽입 - RIGHT (OUTER) JOIN : JOIN 오른쪽에 있는 Table2의 모든 결과를 가지고 온 후 Table1와 매칭하며, 매칭되는 데이터가 없을 경우 NULL값 삽입 - FULL(OUTER) JOIN : Table1과 Table2을 매칭시키고 데이터가 없는 경우 NUL..

SQL & DB/PostgreSQL 2021.01.07

[PostgreSQL] 테이블 세로 결합(UNION)

여러개의 테이블을 다루다 보면 테이블을 결합해서 사용할 때가 있습니다. Select문으로 불러와진 같은 칼럼을 가진 테이블 여러개를 세로로 결합하는 경우에 대해 알아보겠습니다. DATASET QUERY CREATE TABLE app1 ( user_id varchar(255) , name varchar(255) , email varchar(255) ); INSERT INTO app1 VALUES ('U001', 'sedsf', 'sedsf@naver.com' ) , ('U002', 'ferd', 'ferd@naver.com') , ('U003', 'yop', 'yop@naver.com') , ('U004', 'dsf', 'dsf@naver.com') ; CREATE TABLE app2 ( user_id v..

SQL & DB/PostgreSQL 2021.01.07

[PostgreSQL] Window Function(윈도우 함수), 순위함수

윈도우 함수란 - 윈도우 함수는 테이블에서 행집합을 대상으로 `함수입니다. - 행집합은 한 행에 대해서 어떠한 방식으로 관계된 행들이며, 집합 단위로 계산한다는 점에서 집계 함수와 비슷합니다. - 하지만 집계 함수는 해당 되는 행집합에 대해서 하나의 로우로 그 결과물을 보여주지만, 윈도우 함수는 각 행마다 처리결과를 출력합니다. 따라서 윈도우 함수는 집계결과뿐만 아니라 각행의 특징도 볼 수 있습니다. 윈도우 함수의 구조 - 집약함수로 윈도함수를 사용하려면 집약함수 뒤에 OVER를 붙이고 윈도함수를 지정합니다. - 만약 OVER구문에 매개변수를 지정하지 않으면 테이블 전체에 집약함수가 적용됩니다. - 매개변수에 PARTITION BY (컬럼이름) 을 지정하면 해당 컬럼 값을 기반으로 그룹화하고 집약함수가 ..

SQL & DB/PostgreSQL 2021.01.07

[PostgreSQL] 집약함수와 Grouping(COUNT, SUM, AVG, MAX, MIN, GROUP BY)

DATASET QUERY DROP TABLE IF EXISTS review; CREATE TABLE review ( user_id varchar(255) , product_id varchar(255) , score numeric ); INSERT INTO review VALUES ('U001', 'A001', 4.0) , ('U001', 'A002', 5.0) , ('U001', 'A003', 5.0) , ('U002', 'A001', 3.0) , ('U002', 'A002', 3.0) , ('U002', 'A003', 4.0) , ('U003', 'A001', 5.0) , ('U003', 'A002', 4.0) , ('U003', 'A003', 4.0) ; 중복제거함수(DISTINCT) DISTINCT..

SQL & DB/PostgreSQL 2021.01.07

[PostgreSQL] 계산 관련 함수(ABS, POWER , SQRT, POINT)

DATASET QUERY DROP TABLE IF EXISTS location_1d; CREATE TABLE location_1d ( x1 integer , x2 integer ); INSERT INTO location_1d VALUES ( 5 , 10) , (10 , 5) , (-2 , 4) , ( 3 , 3) , ( 0 , 1) ; 절대값, 제곱근, 루트 계산(ABS, POWER, SQRT) ABS는 절대값을 계산하는 함수이며, POWER는 제곱함수, SQRT는 제곱근을 구하는 함수이다. select abs(x1 - x2) ,power(x1 - x2, 2) as Squared ,sqrt(power(x1 - x2, 2)) as Squared_root from location_1d; DATASET2 QU..

SQL & DB/PostgreSQL 2021.01.07

[PostgreSQL] 값 비교(CASE, SIGN, GREATEST, LEAST), 평균값 구하기

DATASET 을 만들기 위한 코드입니다. DROP TABLE IF EXISTS quarterly_sales; CREATE TABLE quarterly_sales ( year integer , q1 integer , q2 integer , q3 integer , q4 integer ); INSERT INTO quarterly_sales VALUES (2015, 82000, 83000, 78000, 83000) , (2016, 85000, 85000, 80000, 81000) , (2017, 92000, 81000, 80000, 90000 ) , (2018, 80000, 83000, 90000, 91000 ) , (2019, 98000, 83000, NULL , NULL ) ; 조건문 비교(CASE) CA..

SQL & DB/PostgreSQL 2021.01.07
반응형