업무에 파이썬 활용할 줄 알기
SQL 5주차 본문
5-1 Subquery, JOIN 복습하고, 이번 수업 내용 맛보기
5-2 조회한 데이터에 아무 값이 없다면 어떻게 해야할까
5-3 조회한 데이터가 상식적이지 않은 값을 가지고 있다면 어떻게해야할까
5-4 [실습] SQL로 Pivot Table 만들어보기
5-5 업무 시작을 단축시켜 주는 마법의 문법 (Window Function - RANK, SUM)
5-6 날짜 포맷과 조건까지 SQL로 한번에 끝내기 (포맷 함수)
5-7 5주차 끝 & 숙제 안내
숙제 음식 타입별, 연령별 주문건수 pivot view 만들기
5-1 Subquery, JOIN 복습하고, 이번 수업 내용 맛보기
데이터에서 예상하지 못한 값이 나왔을 때 (이상한 값, 값이 없음 등), 분석에 적절하게 처리한다
SQL로 엑셀에서 자주 사용하는 형태로 데이터를 만든다
업무에 활용할 수 있는 다양한 SQL 심화 문법을 익힌다
예상하지 못한 값이 Query 결과에 나올 때 어떻게 처리해야 할까?
엑셀에서 해야하는 Pivot, SQL로 한 번에 구현할 수 있을까?
SQL로 이런 것까지 할 수 있었다니! 업무 시간이 엄청 줄어들 것 같은데!
5-2 조회한 데이터에 아무 값이 없다면 어떻게 해야할까
[방법1] 없는 값을 제외해주기
<if문 활용>
<where문 활용>
where문 잘 이해가 안감. left join을 썼기 때문에
null 값을 다 지웠다고 하더라도 left join하는 과정에서 null값이 만들어 질 수 있는거 아닌가?
[방법2] 다른 값을 대신 사용하기
<if문 활용>
<coalesce문 활용>
b.age 컬럼의 값이 없으면 20으로 대체해줘
5-3 조회한 데이터가 상식적이지 않은 값을 가지고 있다면 어떻게해야할까
[방법] 조건문으로 값의 범위를 지정하기
5-4 [실습] SQL로 Pivot Table 만들어보기
1) [실습] 음식점별 시간별 주문건수 Pivot Table 뷰 만들기 (15~20시 사이, 20시 주문건수 기준 내림차순)
base data: 음식점별 시간별 주문건수
※피봇뷰를 만들어주기 위해서 max값을 구해준다. 정도로만 이해하고 넘어가기
※avg, sum, max처럼 계산하는 함수가 들어갈 때는 group by를 써주어야한다
2) [실습] 성별, 연령별 주문건수 Pivot Table 뷰 만들기 (나이는 10~59세 사이, 연령 순으로 내림차순)
My solution
5-5 업무 시작을 단축시켜 주는 마법의 문법 (Window Function - RANK, SUM)
- window_function: 각 행의 관계를 정의하기 위한 함수로 그룹 내의 연산을 쉽게 만들어준다.
- e.g.
- 한식 식당 중에서 주문건수가 많은 순으로 순위를 매기고 싶을 때
- 한식 식당 전체 주문건수 중에서 A 식당이 차지하는 비율을 알고 싶을 때
- 2건 이상 주문을 한 소비자 중에, 처음 주문한 식당과 2번째로 주문한 식당을 같이 조회할 때
- windonw funtion의 기본구조
window_function(argument) over (partition by 그룹 기준 컬럼 order by 정렬 기준)
- N번째까지의 대상을 조회하고 싶을 때, Rank
[실습] 음식 타입별로 주문 건수가 가장 많은 상점 3개씩 조회하기
- 전체에서 차지하는 비율, 누적합을 구할 때, Sum
- 누적합이 필요하거나 카테고리별 합계 컬럼과 원본 컬럼을 함께 이용할 때 유용하게 사용할 수 있음
[실습] 각 음식점의 주문건이 해당 음식 타입에서 차지하는 비율을 구하고, 주문건이 낮은 순으로 정렬했을 때 누적 합 구하기
5-6 날짜 포맷과 조건까지 SQL로 한번에 끝내기 (포맷 함수)
w(요일) 0=일요일, 1=월요일
[실습2] 년도별 3월의 주문건수 구하기
5-7 5주차 끝 & 숙제 안내
숙제 음식 타입별, 연령별 주문건수 pivot view 만들기
*주의: subquery에서 group by 1 만 하는게 아니라 group by 1, 2로 하는 것 잊지말기
group by 1만 했을 경우
'SQL > [스파르타] 엑셀보다 쉽고 빠른 SQL' 카테고리의 다른 글
SQL 4주차 (0) | 2023.11.22 |
---|---|
SQL 3주차 (0) | 2023.11.15 |
SQL 2주차 (0) | 2023.11.14 |