카테고리 없음

데이터 분석 트랙 6일차(25.02.24.) TIL

jjaio8986 2025. 2. 24. 21:56

[목차]

1. 3회차 라이브 강의 및 개인공부 정리

2. 2주차 팀 발제 개인 인사이트 정리


1. 3회차 라이브 강의 및 개인공부 정리

 1.1. 라이브 강의 및 개인공부 인사이트 정리

  A. 필터링 조건문

   - where 절에서 조건을 여러개 묶어야 할 경우 조건마다 소괄호를 꼭 써야 한다. [미사용시 컴퓨터는 연산자가 어디까지 적용되는지 알 수 없어 오류가 발생한다.]

   ex. where (컬럼1 = !값1) and ((컬럼2 = 값2) or (컬럼3 = 값3))

 - SQL 집계함수 정의) "전체", "특정 컬럼"을 대상으로 select문에서 사용되며 5종류가 있다.

  - SQL의 그룹화 "GROUP BY", "HAVING" [특정 기준을 가지고 집계함수를 사용하자.]

    - SELECT절에서 그룹핑 하고자 하는 데이터와 기준 컬럼을 적은 후 > GROUP BY를 사용할 시 기준이 되는 컬럼은 모두 적어준다! [집계함수는 1개의 값을 반환하지만, 기준 컬럼은 수없이 많은 값을 반환한다. 따라서 기준컬럼 당 값 1개를 반환하기 위해 꼭 명시해야 한다.]

    - GROUP BY절에서 기준컬럼의 조건= 'XX별'과 같은 단어를 의미한다. 

    - HAVING절은 WHERE를 통해 전체를 필터링 하고 GROUP BY를 통해 그룹핑을 한 뒤에 그 다음에 적용할 조건을 지정하는 절이다. 필수적인 절은 아니지만, 반드시 순서는 기억해야 한다.[WHERE > GROUP BY > HAVING]

 B. SQL SUB QUERY 구문

  - 서브쿼리문은 마지막에 세미콜론( ; )을 사용할 수 없다.

  - 서브쿼리문 안에서 order by절을 사용할 수 없다.

  - 서브쿼리는 SELECT(중첩 서브쿼리), WHERE(스칼라 서브쿼리), FROM(인라인 뷰 서브쿼리)절에서 사용 가능하며 가장 일반적인 형태가 FROM 절에 사용되는 형태이다.

  - 종류

   B.a. 중첩(일반) 서브쿼리

    - where 절에서 사용되는 서브쿼리로, 서브쿼리의 결과에 따라 조건절이 달라진다.

ex. "BASIC.THEGLORT 테이블에서 나이가 ('문동은'의 '나이')보다 큰 경우의 모든 데이터를 가져온다."

[SELECT *

FROM 테이블1

WHERE 컬럼1 > (SELECT 컬럼1 FROM 테이블1 WHERE 컬럼2 = '‘)]

   B.b. 스칼라 서브쿼리

    - SELECT 절에서 사용되며 하나의 컬럼처럼 사용된다. 스칼라 서브쿼리를 사용하기 위해선 서로다른 테이블이 필요하다.

ex.[SELECT 컬럼1, 컬럼2,

(select count(*) from 테이블B where 테이블B.컬럼1=테이블A.컬럼1) as same_name_cnt,

(select sum(컬럼B) from 테이블B where 테이블B. 컬럼1=테이블A.컬럼1) as same_name_sumamount

from basic.theglory;]

cf) join의 형태로 묶어서 사용하는 것을 from 문[테이블 단위]이 아닌 select문에서 서브쿼리 where[컬럼 단위]를 통해 줄 수 있다!

   B.c. 인라인 뷰(가장 많이 사용)

    - FROM 절에서 하나의 테이블처럼 사용된다. 반드시 테이블 명칭을 부여해야 한다.

    - 차후 JOIN, UNION과 많이 사용된다.

 

C. 개인 진도 인사이트

 - case 구문에서 when절에서 조건을 2개 엮으려면 반드시 and 뒤에 컬럼과 함수를 정확히 적어야 한다.

ex.

[case when price <=5000 then 'price_group1'

when price >5000 and price <=10000 then 'price_group2'

when price >10000 and price <=30000 then 'price_group3'

when price <30000 then 'price_group4'

end price_group]

  - order by 절에는 값, 수식이 들어간다.

  - avg, sum 등등의 수식 내에 if와 같은 조건문을 적어 값을 가공할 수 있다.

  - concat 문에는 컬럼의 데이터, 한글, 영어, 숫자, 기타 특수문자를 넣을 수 있다! 기본적으로 concat 안에는 문자 데이터들을 붙이는 것이다 보니 꼭, 문자데이터에 작은따옴표로 표시를 해 줘야 한다.

  - 'substr' 문에서 시작 숫자를 지정한 뒤 끝 숫자를 생략하거나, 아주 큰 숫자를 지정해 그 사이의 글자를 다 가져올 수 있다.

  - case문에서 ‘else’를 사용하는 이유는 조건에 부합하지 않는 경우를 지정하기 위함이다. 따라서 조건에 부합하지 않는 경우가 없을 경우 생략이 가능하다.

  - MySQL에서 data type 오류 해결하기 위해선  함수를 쓸 수 있다.

   형태 : cast(변경 컬럼 혹은 값) as (decimal[숫자형], char[문자형])


2. 2주차 팀 발제 개인 인사이트 정리

 - 2주차 팀 단위 발제는 주제 선정 및 SQL 활용 EDA이다.

 - EDA : 수집한 데이터가 들어왔을 때, 이를 다각도로 관찰하고 이해하는 과정[탐색적 데이터 분석]

 - 선정 주제 : [이커머스] 이커머스 이벤트 히스토리

 - 세부 주제

  a. 신규 및 기존 유저(영구 사용자 ID) 구분 및 행동패턴 확인.

  b. 가장 많이 팔리는 제품이 무엇인가?

  c. 제품별 브랜드 충성도 확인. 가격이 우선인가 브랜드가 우선인가?

  d. 가장 많이 팔린 제품과 같이 팔린 제품은 무엇인가?

  e. 마케팅을 한다면[목표는 자유ex. 기존고객 유지, 제품 판매량 증가] 무엇을 기획해야 해야할까? [개인 목표]

 

 ※ 세부 주제는 다음과 같이 정했고 02.26.까지 데이터 분석 수행 및 해석을 해볼 것임.