본문 바로가기

SQL/SQL Grammar9

[BigQuery] QUALIFY 구문 🎯 QUALIFY일반적으로 윈도우 함수와 함께 사용됨특정 조건을 충족하는 행을 선택하거나 제거하는 데 사용됨윈도우 함수의 결과를 기반으로 행을 필터링 하는데 유용함 예시 쿼리(1) : with 절과 where 사용order_id(주문 아이디), amount(주문 금액)으로 이루어진 테이블(orders)에서 주문 아이디별로 가장 높은 가격의 물건만 보고 싶은 경우, 다음과 같이 with 절을 이용해 서브쿼리로 결과를 출력할 수 있다.where 절로 조건을 거는 경우WITH max_amount_per_order AS ( SELECT order_id, amount, MAX(amount) OVER (PARTITION BY order_id) AS max_amount FROM orders.. 2024. 5. 20.
[BigQuery] 데이터 타입별 함수 정리 (문자열과 시간/날짜) 🎯 데이터를 그대로 가져오지 않고 변환이 필요한 경우에 쓸 수 있는 함수를 알아보자 SELECT 문에서 데이터를 변환시킬 수 있으며, WHERE의 조건문에서도 사용 가능 데이터의 타입에 따라 다양한 함수가 존재 1. 자료 타입을 변형하는 함수 : CAST SELECT CAST(1 AS STRING) # 숫자 1을 문자 1로 변경 👉 더 안전하게 데이터 타입 변경하기 : SAFE_CAST() → 변환이 실패할 경우 NULL을 반환하며, 다음과 같은 경우에 에러 대신 NULL이 됨 SELECT SAFE_CAST("문자열" AS INT64) (유사 사례) 안전하게 나누기 연산하기 : SAFE_DIVIDE() SAFE_DIVIDE(x, y) # zero error 대신 null 발생 2. 문자열을 다루는 함수 .. 2024. 4. 1.
[식품 배송 데이터 분석] 매출 지표 분석 본 포스팅은 아래 도서의 내용을 스터디, 참고했습니다. instacart라는 회사의 데이터를 기반으로 분석을 수행해 보자. 먼저, 주요 지표를 추출하는 것으로 시작한다. 보통 다음과 같은 지표로 비즈니스의 전반적인 현황을 파악한다. 1. 전체 주문 건수 2. 구매자 수 3. 상품별 주문 건수 4. 카트에 가장 먼저 넣는 상품 10개 5. 시간별 주문 건수 6. 첫 구매 후 다음 구매까지 걸린 평균 일수 7. 주문 건 당 평균 구매 상품 수(UPT; Unit Per Transaction) 8. 인당 평균 주문 건수 9. 재구매율이 가장 높은 상품 10개 10. Department별 재구매율이 가장 높은 상품 10개 이 중, 구하기 조금 까다로웠던 지표 몇 가지만 살펴보겠다. 🛒 카트에 가장 먼저 넣는 상품.. 2023. 10. 10.
M1 mac MySQL 삭제 후 재설치하기 MySQL을 잘 쓰다가 종료하고 다시 켰더니 아래와 같이 나타났다. 심지어 '스키마 생성하기'도 되지 않고 에러가 뜬다. 워크벤치엔 문제가 없는 것을 확인했다면 다음 방법으로 MySQL 을 삭제 후 재설치한다. homebrew로 mySQL 설치한 경우 : 완전 삭제하기 # 프로세스 죽이기 brew services stop mysql # 설치 경로 확인 which mysql /usr/local/bin/mysql # homebrew로 삭제 brew uninstall --force mysql homebrew로 재설치 brew install mysql # mysql 서비스 시작 brew services start mysql # root 비번 생성 mysql_secure_installation => VALIDAT.. 2023. 10. 6.
local에 있는 csv 파일을 mySQL로 불러오기 MySQL Shell Script에서 직접 파일을 불러오는 방식으로 다음과 같은 에러를 해결할 수 있음 1. mySQL workbench 재접속 Quit MySQL Workbench 2. 다시 접속 후, Edit Connection 에서 설정 변경 Edit Connetion > Advanced > Others 메뉴 OPT_LOCAL_INFILE=1 을 입력 Test Connection 버튼을 클릭하여 정상적으로 접속이 되는지 확인 3. 테이블 생성 테이블이 미리 생성되어 있지 않으면 csv 파일을 불러올 수 없음 첫번째 줄 의미 : 앞서 생성된 스키마를 사용하겠음 dataset2라는 테이블 생성하기 USE mydata; CREATE TABLE `dataset2` ( `Clothing ID` int DEF.. 2023. 10. 6.
[자동차 매출 데이터] Churn Rate 구하기 본 포스팅은 아래 도서의 내용을 스터디, 참고했습니다. ✅ Churn Rate 란? 활동 고객 중 얼마나 많은 고객이 비활동 고객으로 전환되었는지를 의미하는 지표이다. 기업에서는 이탈 고객 예측과 예측 결과를 바탕으로 적절한 마케팅 전략을 취하고자 노력하므로 Churn Rate 가 중요하다. Churn Rate는 일반적으로 다음과 같이 정의한다. max(구매일, 접속일) 이후 일정 기간동안 구매/접속을 하지 않은 상태 보통 90일(3개월)을 기준으로 Churn Rate을 구한다. 마지막 구매, 접속일이 현 시점 기준 3개월이 지난 고객이 이탈 고객이 되는 것이다. 1. Churn Rate 구하기 Churn Rate의 기준은 마지막 구매일이다. 따라서 각 고객의 마지막 구매일을 먼저 구해야 한다. sele.. 2023. 10. 5.
[자동차 매출 데이터] 미국 베스트셀러 top 5 자동차 구하기 (서브쿼리) 본 포스팅은 아래 도서의 내용을 스터디, 참고했습니다. 최종 쿼리와 결과 select * from ( select * , row_number() over (order by sales desc) as ranking from (select productName, sum(priceEach * quantityordered) as sales from orders as a left join orderdetails as b on a.orderNumber = b.orderNumber left join products as c on b.productCode = c.productCode left join customers as d on d.customerNumber = a.customerNumber where countr.. 2023. 10. 5.
[자동차 매출 데이터] 연도별 재구매율 본 포스팅은 아래 도서의 내용을 스터디, 참고했습니다. 재구매율은 특정 기간 구매자 중, 특정 기간에 연달아 구매한 구매자의 비중이다. 연도별 재구매율을 구해 보자. 최종 쿼리와 결과 select country, substr(a.orderDate, 1, 4) as year ,count(distinct a.customerNumber) as BU_1 ,count(distinct b.customerNumber) as BU_2 ,count(distinct b.customerNumber) / count(distinct a.customerNumber) as retention_rate from orders as a left join orders b on a.customernumber = b.customernumber.. 2023. 10. 5.
[자동차 매출 데이터] 매출 top 5 국가와 매출 (서브쿼리) 본 포스팅은 아래 도서의 내용을 스터디, 참고했습니다. 최종 쿼리와 결과 select * from( select country, sales, dense_rank() over (order by sales desc) as sales_rank from ( select country , sum(priceEach * quantityordered) as sales from orders as a left join customers as b on b.customerNumber = a.customerNumber left join orderdetails as c on a.ordernumber = c.ordernumber group by 1 ) a ) b where sales_rank 2023. 10. 5.
728x90