본문 바로가기

Redshift

[SQL] 문자열 더해서 출력하는 방법 (concat or ||) 2가지 방법이 있다 1. || 기호를 쓰거나 (키보드상에 원화 기호랑 같은 키패드에 있는 | 짝대기 기호 두 번) 2. concat 함수를 쓰거나 select s2_product_code as id , it_explan2 as description , it_cust_price as price , it_price as sale_price , it_img1 as img_link from item_table 위와 같은 쿼리문의 결과로 price 컬럼과 sale_price 컬럼이 그냥 숫자만 나오는 상황에 숫자 뒤에 'USD' 라는 통화 정보를 붙여서 출력하고 싶다면 아래와 같이 쿼리문을 작성해주면 된다 select s2_produ.. 2022. 8. 30.
[SQL 예문] 상품등록 후 최초 30일간 판매 데이터 (반응 좋은 신제품 알아보기) 잘나가는 신제품, 반응이 좋은 신제품을 알아보고 싶을 때 각 SKU 별 상품등록 후 최초 30일간의 판매 데이터를 보고 파악할 수 있다. 아래 캡쳐본 같은 형식의 데이터를 뽑아보기 위해 쿼리문을 작성했다. 쿼리문 ) SELECT it.s2_product_code AS SKU ,it.it_name AS product_name ,it_time AS reg_date ,TO_CHAR(SUM(ct.ct_qty) , '999,999,999') AS first_30days_od_qty ,TO_CHAR(SUM(ct.ct_price * ct.ct_qty), '999,999,999.99' ) AS first_30days_od_price FROM shop_order AS od JOIN shop_cart AS ct ON od.. 2022. 3. 21.
[SQL 예문] 브랜드별 매출 국가 순위 TOP 10 (ft. 서브쿼리, Round_number() Over () ) 브랜드별, 어느 국가에서 잘 팔리는지 매출 순으로 상위 국가 10개씩 추출하기 아래와 표와 같은 형식으로 데이터를 뽑아보자 JOIN 2번 하고 서브쿼리 쓰고 ROW_NUMBER() OVER (PARTITION BY _ ORDER BY _) 함수를 사용했다. SELECT it_brand ,od_b_country ,od_price FROM ( SELECT it.it_brand ,od.od_b_country ,TO_CHAR (SUM(ct.ct_qty) , '999,999,999') AS "od_qty" ,TO_CHAR (SUM(ct.ct_price * ct.ct_qty), '999,999,999.99' ) AS "od_price" ,ROW_NUMBER() OVER (PARTITION BY it_brand OR.. 2022. 3. 18.
[SQL 예문] 브랜드별 판매수량, 금액 구하기 (feat. JOIN) 우리 회사 DB 구조 상, 브랜드별 판매수량, 금액을 추출하기 위해서는 세 테이블을 조인 해야한다. ITEM 테이블 , CART 테이블, ORDER 테이블 왜 이렇게 세개가 필요하냐면, CART 와 ORDER 테이블엔 BRAND 명 칼럼이 없음 ORDER 테이블엔 주문번호별 총주문금액은 있어도 한 주문번호 안에 어떤 상품들을 담았는지는 없음 그건 CART테이블에 데이터 존재 ITEM 테이블에 BRAND 명 칼럼 존재. CART 테이블에 상품별 판매수량, 금액 칼럼 존재 ORDER 테이블에 주문번호 (od_id), 결제일시 (od_receipt_time) 칼럼 존재 우선 ORDER 테이블과 CART 테이블을 주문번호 (od_id) 를 key 로 해서 JOIN 한다. 이렇게 JOIN 한 결과와 ITEM 테이.. 2022. 3. 18.
[AWS Redshift SQL] DATEDIFF 함수 _ 날짜 차이 구하기 DATEDIFF 함수는 두 날짜 또는 시간 표현식에서 날짜 부분의 차이점을 반환한다. 구문 DATEDIFF ( datepart, {date|time|timetz|timestamp}, {date|time|time|timestamp} ) 차이나는지 구하고 싶을 때 DATEDIFF ( day, 날짜, 날짜 ) 예 ) DATEDIFF ( day, '2021-01-01', '2021-01-02' ) -> 1일 차이나기 때문에 결과는 1 차이나는지 구하고 싶을 때 DATEDIFF ( week, '2021-01-01', '2021-12-31' ) -> 결과는 52 차이나는지 구하고 싶을 때 DATEDIFF ( qtr, '1998-07-01',.. 2022. 3. 8.
[AWS] 데이터 아키텍처 (RDS, S3, GLUE, ATHENA, REDSHIFT) 내가 보려고 정리하는 우리 회사 AWS 데이터 아키텍처 사업 본부별 다른 DBMS 쓰다가 최근에 데이터 통합을 추진하면서, AWS 서비스를 사용한 데이터웨어하우스를 구축하는 중이다. (AWS는 단순한 웹페이지가 아니라 클라우드 컴퓨팅 환경이다.) 위의 아키텍처에서 필요한대로 점점 더 추가될 수 있다. 하나씩 기능을 살펴보자 RDS (Relational Database Service) Category : DB 관리형 관계형 데이터베이스 MySQL, PostgreSQL, Oracle Database, SQL Server,MariaDB, Amazon Aurora 중에 선택해서 데이터베이스를 생성할 수 있다. 클라우드에서 관계형 데이터베이스를 간편하게 설정, 운영 및 확장 가능 S3 (Simple Storage.. 2022. 3. 8.
[AWS Redshift SQL] 숫자 세 자리 마다 콤마(,) 찍기 / 소수점 자릿수 맞추기 (ft. TO_CHAR) AWS Redshift 에서 123,444,000 처럼 숫자 세자리 수 마다 콤마 찍어주는 방법 MySQL 에서는 FORMAT 함수로 되지만 Redshift 에서는 FORMAT 함수 지원 안해줌.. TO_CHAR 함수 사용하면 할 수 있다. SELECT TO_CHAR ( 컬럼명 , '999,999,999,999' ) FROM 테이블명 999,999 는 출력 될 예상 수치 보다 큰 숫자로 입력해야 잘 적용 됨으로 일단 큰 숫자로 설정하는게 좋다 ex) SELECT TO_CHAR ( 주문금액, '999,999,999,999,999' ) FROM shop_order 소수점 자리도 몇자리까지만 출력되게 할 .. 2022. 3. 7.
[AWS] Redshift 는 PostgreSQL을 기반으로 한다 Amazon Redshift는 PostgreSQL을 기반으로 한다. 따라서 MySQL 에서는 사용 가능한 함수고, 잘 돌아가는 쿼리문인데 Redshift 에서는 오류가 나는 경우들도 있다. 어떤 함수들의 경우 MySQL 에서 사용가능한데 Redshift 에서는 사용 불가능하다. 또, 아무리 Amazon Redshift 기반이 PostgreSQL 라고 해도 Amazon Redshift SQL 과 PostgreSQL 에는 차이가 있다. Amazon Redshift SQL 에서 모든 PostgreSQL 의 함수와 기능을 제공하는 것은 아니라는 것이다. 아래 공식문서에 자세히 나와있다. https://docs.aws.amazon.com/ko_kr/redshift/latest/dg/c_redshift-and-po.. 2022. 3. 4.
[SQL예문] 월별 / 일별 주문 수 추출하기 (feat. SUBSTRING) 월별 주문 수 추출하기 우선, 주문관련 데이터가 누적되는 shop_order 테이블에 어떤 컬럼들이 있는지 살펴본다. SELECT * FROM 주문테이블 여러 컬럼들 중 주문번호, 주문날짜 및 시간, 주문 상태 이 세 칼럼이 필요할 것 같다. 월별 주문 수 추출 쿼리문 SUBSTRING 함수 사용법👀 월별 주문수 구하기 위해 월별로 GROUP BY 가 필요! 날짜 및 시간 컬럼에서 yy-mm 까지만 잘라서 사용! (SUBSTRING 함수로) SUBSTRING (od_receipt_time,1,7) AS "YY-MM" ㄴ od_receipt_time 컬럼에서 1번째 문자열부터 7개까지만 사용하겠다. 이 컬럼명은 yy-mm 으로 명명 한다. COUNT(od_id) AS od_count ㄴ od_id 주문번호.. 2022. 2. 25.
728x90
반응형