본문 바로가기

쿼리문

[SQL] 순위 매기는 함수 row_number (ft. 검색어 순위 추출) SQL 순위 매기는 함수 row_number row_number 함수는 1 부터 순위 중복 없이 쭉 매겨주는 함수 동점이 있어도 같은 순위로 매기지 않음 예시를 통해 사용법을 알아보자 최근 1년 검색어 순위를 추출해보자 결과는 아래 표와 같이 나오면 좋겠다 키워드별 검색량에 따라 내림차순 정렬이 되어있고 맨 위에서부터 차례로 1, 2, 3, .... 순위를 매겨놨다. 쿼리문 > select (row_number() over()) ,lower ,query from (SELECT lower(pp_word) -- 대소문자 구분없이 키워드 추출 ,count(*) as query -- 검색량 FROM keyword_table where pp_date between current_date - 365 and curr.. 2022. 12. 20.
[SQL, QuickSight] 브랜드별 일별 매출 쿼리문 (ft. 날짜 필터) 퀵사이트에서 (Amazon QuickSight) 브랜드 판매순위 표 만드는 방법 퀵사이트 기본 사용 방법은 이 곳에서 👉 1. 데이터세트 생성하기 👉 2. 분석, 대시보드 만들기 브랜드별 지정한 기간동안 (필터) 매출 표 ㄴ 그룹화 기준을 "브랜드" 컬럼으로 지정하고 값에 주문수, 주문금액 지정 브랜드별 매출 순위 차트 ㄴ 위에서 만든 표를 복사해서 차트 형식만 오른쪽 차트 처럼 선택하면 자동 생성 됨 날짜, 브랜드 필터로 두 차트 연결하기 ㄴ 날짜 필터를 두 차트에 걸리게 선택, 시트에 날짜 필터 추가 하기 SELECT left(od.od_receipt_time, 10) AS "date", it.it_brand, SUM(ct.ct_qty)AS "od_qty" , SUM(ct.ct_price * ct.c.. 2022. 9. 23.
[SQL, QuickSight] 일별 가입수, 가입경로 쿼리문/ 차트 퀵사이트에서 (AWS QuickSight) 차트 만드는 방법 퀵사이트 기본 사용 방법은 이 곳에서 👉 1. 데이터세트 생성하기 👉 2. 분석, 대시보드 만들기 상위 가입경로 일별 추이 차트 ㄴ x축은 "날짜" 선택, 값 필드엔 "가입수" 선택, 색상엔 "가입경로" 선택 지정한 날짜에 가입경로별 가입수 ㄴ 그룹화 기준은 "가입경로", 값은 "가입수" 날짜 필터 만들어서 시트에 추가 일별 가입수 추이 차트 ㄴ x축은 "날짜" 선택, 값은 "가입수" 선택 SELECT left(get_datetime,10) as "date" , how_get , count(*) as join_cnt FROM s2_s2_member_get group by "date", how_get 2022. 9. 23.
[SQL] 월별 주문, 방문, 가입, 신규주문/ 재주문 쿼리문 1. 월별 주문수, 주문금액 SELECT SUBSTRING(od_receipt_time,1,7) AS od_month , COUNT(SUBSTRING(od_receipt_time,1,7)) AS gl_od_cnt , SUM(od_receipt_price) AS "gl_od_amount($)" , SUM(od_receipt_price) * (SELECT data FROM s2_s2_api_currency_cms WHERE currency = 'USD' ORDER BY db_date desc limit 1) AS "gl_od_amount(krw)" FROM "dev"."gl_test"."s2_g5_shop_order" WHERE SUBSTRING(od_receipt_time,1,10) BETWEEN '202.. 2022. 9. 20.
[SQL, QuickSight] 누적일 비교 쿼리문 (전 월 누적일, 전 년 동 월 누적일) AWS QuickSight 에서 데이터 시각화 하기 위해 작성한 상세 쿼리문 공유합니다. 테이블명, 컬럼명은 DB 마다 다르겠지만 어떻게 쿼리문이 작성 되는지 살펴보시면 도움 되실거에요 퀵사이트 기본 사용 방법은 이 곳에서 👉 1. 데이터세트 생성하기 👉 2. 분석, 대시보드 만들기 1. 전 월 누적일 비교 표 (전 월 동기간) - MTD 와 전 월 동일 기간 비교 SELECT visit.month , gl_visit , gl_order , gl_total_price , gl_total_price * (SELECT data FROM "s2_s2_api_currency_cms" WHERE currency = 'USD' ORDER BY db_date desc limit 1) AS "gl_total_price.. 2022. 9. 20.
[SQL] 전월 동일 시점 누적 데이터 비교 쿼리문(ft. Line Chart) 테이블명과 컬럼명은 회사마다 다릅니다. SQL 도 DBMS 에 따라 조금씩 표현 방법이 다릅니다. 어떤식으로 쿼리문을 작성하면 되는지 이해하며 보시고 상황에 맞게 수정해서 사용해보세요 :) 전월 동일 시점 누적 데이터 비교 = 전월 같은 날 까지의 누적 데이터 비교 예를들어 오늘이 22.06.13 이고, 22.06.01 ~ 22.06.12 사이의 누적 주문 데이터와 22.05.01 ~ 22.05.12 사이의 누적 주문 데이터를 비교해 보고 싶을 때 , (아직 오늘 데이터는 변하는 중이니까 어제까지의 데이터로 비교해보겠다) 즉 같은말로, 이번달 1일부터 어제까지의 누적주문 금액과 전월 1일부터 전월 동일 까지의 누적 금액을 비교해 보고 싶을 때 , 아래와 같은 쿼리문을 작성해주면 비교해 볼 수 있다. SE.. 2022. 6. 13.
[SQL] 월별 방문자수(UV), 월별 가입수 쿼리문 [SQL] 월별 방문자수(UV), 월별 가입수 쿼리문 테이블명과 컬럼명은 회사마다 다릅니다. SQL 도 DBMS 에 따라 조금씩 표현 방법이 다릅니다. 어떤식으로 쿼리문을 작성하면 되는지 이해하며 보시고 상황에 맞게 수정해서 사용해보세요 :) 월별방문자수 (UV - UniqueVisit) SELECT LEFT(vi_date,7) AS month ,COUNT(DISTINCT vi_ip) AS uv FROM visit WHERE vi_date BETWEEN '2021-01-01' AND 'current_date' AND LEFT(vi_ip,9) !='11.11.100' -- 회사 IP 제외 GROUP BY LEFT(vi_date,7) ORDER BY month ASC SELECT LEFT(vi_date,7).. 2022. 5. 27.
[SQL] 상품등록 후 최초 30일 판매 데이터 쿼리문 테이블명과 컬럼명은 회사마다 다릅니다. SQL 도 DBMS 에 따라 조금씩 표현 방법이 다릅니다. 어떤식으로 쿼리문을 작성하면 되는지 이해하며 보시고 상황에 맞게 수정해서 사용해보세요 :) 상품등록 후 최초 30일 판매 데이터 SELECT it.s2_product_code AS SKU ,it.it_name AS product_name ,it_time AS register_date --,DATEDIFF(day, it_time, current_date) AS after_reg_date -- 상품등록한지 몇일 지났는지 ,SUM(ct.ct_qty) AS first_30days_od_qty ,SUM(ct.ct_price * ct.ct_qty) AS first_30days_od_price FROM shop_orde.. 2022. 5. 27.
[SQL 예문] SQL 연습하기 3 (기초 쿼리문) 1) '회원 가입 경로' 테이블에 있는 모든 컬럼을 출력해보자 테이블명 : member_get SELECT 는 컬럼을 선택하는 명령어인데 * 를 뒤에쓰면 모든 컬럼 선택한다는 의미 SELECT * FROM member_get idx, mb_id, how_get, get_datetime 이렇게 4개 컬럼이 존재한다. how_get 컬럼이 가입경로 컬럼인데 빈칸은 고객이 가입경로 체크 안한 것 ㅎㅎ 2) how_get 컬럼이 빈칸인건 제외하고 값이 있는 것만 출력해보자 SELECT * FROM member_get WHERE how_get != '' WHERE 는 조건을 걸어주는 명령어 = 이 같다는 의미고 != 는 같지 않다는 의미다 작은 따옴표를 두번 써주면 빈칸을 의미. 즉 how_get 컬럼이 빈칸이 .. 2022. 3. 24.
[SQL 예문] SQL 연습하기 2 (기초 쿼리문) 1) member 테이블에 있는 모든 컬럼을 출력해보자 SELECT 는 컬럼을 선택하는 명령어인데 * 를 뒤에쓰면 모든 컬럼 선택한다는 의미 SELECT * FROM member 컬럼이 대략 20개 정도 있는 테이블이다. id, name, nick_name, 가입일(mb_datetime), email 기타등등 2) 가입일이 '2021-01-01' ~ '2021-01-10' 인 데이터들만 출력해보자 SELECT * FROM member WHERE mb_datetime BETWEEN '2021-01-01 00:00:00' AND '2021-01-10 23:59:59' WHERE 조건절에서 가입일 컬럼 mb_datetime 를 해당 기간으로 걸어준다 3) 가입일이 '2021-01-01' ~ '2021-01-1.. 2022. 3. 24.
[SQL 예문] SQL 연습하기 1 (기초 쿼리문) 입문용 예시 쿼리문 :) 1) visit_sum 테이블에 있는 모든 컬럼을 출력해보자 SELECT 는 컬럼을 선택하는 명령어인데 * 를 뒤에쓰면 모든 컬럼 선택한다는 의미 SELECT * FROM visit_sum 컬럼이 vs_date 와 vs_count 두개 존재하는 테이블 . vs_date 는 날짜이고 vs_count 는 방문자 count 한 숫자. 2) visit_sum 테이블에서 날짜조건을 걸어보자. - WHERE 2021-01-01 부터 2021-01-31 기간동안 일별 방문자수를 출력해보자 SELECT * FROM visit_sum WHERE vs_date BETWEEN '2021-01-01' AND '2021-01-31' 날짜가 정렬이 안되어 있다. 3) 날짜를 오름차순으로 정렬해보자 - O.. 2022. 3. 24.
[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 함수] RANK() OVER (Partition by _ Order by _ ) 그룹핑 한 후 순위를 매겨주는 함수 SELECT RANK( ) OVER ( PARTITION BY 그룹핑할 칼럼 ORDER BY 정렬할 칼럼 ) FROM 테이블명 ( ORDER BY 정렬할 칼럼 DESC or ASC or 생략하면 ASC가 디폴트값 ) 이 긴 함수가 한 세트~ PARTITION BY 에 지정한 칼럼 기준으로 그룹핑 해주고 ORDER BY 에 지정한 칼럼 기준으로 정렬해준담에 RANK 행 마다 순위를 매겨준다 ROW_NUMBER() OVER (Partition by _ Order by _) 와의 차이점은 ROW_NUMBER( ) : 1등이 2명이어도 1등, 2등으로 나눔 RANK( ) : 1등이 2명이면 그 다음 순위는 3등으로 매김 예시 쿼리문 ) SELECT s.ip, s.session.. 2022. 3. 14.
[SQL예문] 신규주문 / 재주문 회원수 구하기 (ft. CASE WHEN , 서브쿼리) 주문 테이블에서 일정 기간 동안 신규주문 회원수와 재주문 회원수를 구하고 싶다. 신규주문과 재주문 구분은 해당 아이디의 주문 횟수가 1이면 신규주문 해당 아이디의 주문 횟수가 1초과 이면 재주문 으로 구분한다. CASE WHEN 구문 CASE WHEN COUNT(mb_id) = 1 THEN '신규주문' WHEN COUNT(mb_id) > 1 THEN '재주문' ELSE '-' END 이 CASE WHEN 구문을 SELECT 문에 하나의 칼럼으로 넣을 것이다. 우선 회원아이디로 group by 해서 회원별 주문횟수, 주문총금액을 구한다. IN ( ) 함수 사용법은 1 THEN '재주문' ELSE '-' END) AS 주문유형 FROM shop_order WHERE od_time BETWEEN '2022-0.. 2022. 3. 3.
[구글 스프레드시트] SQL Query문을 구글스프레드 시트에서~ 구글 스프레드시트에서 를 통해 SQL 쿼리문과 같은 기능을 사용할 수 있다. query 함수는 아래와 같이 사용. = query(사용할 데이터 범위 설정, 쿼리문) 필자는 SQL문을 어디에 사용했느냐, 매주 상품별로 발주를 넣는데, 100개가 넘는 브랜드 중 팀원마다 맡은 브랜드가 있다. 각 팀원별로 맡은 브랜드만 확인하면 되니까 Query 함수를 써서 해당 브랜드만 각 담당자별 시트탭에 데이터를 뿌려줬다. ↓실제 시트 화면↓ 우선 상품별로 발주가 필요한지 여부를 체크해 주는 '상태부여' 탭을 만들고 (한달 동안 판매된 수량과 재고 수량 비교하여 발주할 수량 정해줌) 각 담당자들 탭에 query 문으로 데이터 뿌려주기 =QUERY('상태 부여'!A2:I,"select * where B='에뛰드 하우스' .. 2021. 5. 14.
728x90
반응형
LIST