inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[백문이불여일타] 데이터 분석을 위한 고급 SQL

[백문이불여일타] 데이터 분석을 위한 고급 SQL | 서브쿼리 | 7분 27초

175

Seungkyu Kim

작성한 질문수 7

1

강사님께서 date 컬럼에서 날짜가 빠져있을 수 있다고 말씀해주셨습니다. 

그럴때 AVG()를 계산할때 조심하라고 말씀해주셨습니다.

예를 들어 강사님이 말씀해주신 쿼리로 작성한다면 아래와 같은 결과가 나온다고 말씀해주셨습니다. 

1. 날짜가 공백이 없는 상태:(7+1+3+2+4+3+2)/ 7

2. 날짜가 공백이 있는 상태:(7+1+2+4+3+2)/6

3. 실제 원하는 "날짜가 공백이 있는 상태":(7+1+0+2+4+3+2)/7

조심하라고만 말씀해주시고 어떻게 쿼리를 작성할떄 조심해야할지 스크립트를 보여주시지 않아 stackoverflow를 찾아봐도 찾기가 힘들어 질문을 남깁니다. 

sql

답변 1

1

윤선미

안녕하세요 :)

두 가지 방법이 있을 수 있겠습니다.

1. 간단하게는 SUM(incidents_daily) / 7 처럼 쿼리를 작성해서, 분모가 7이라는 것을 명확하게 할 수 있습니다.

2. date 정보를 가지고 있는 메타 테이블을 기준으로 daily_stats 라는 테이블을 LEFT JOIN 하고 -> 비는 날짜 때문에 생기는 incidents_daily 컬럼의 NULL 값들을 0으로 대체하는 연산을 한 뒤에 -> AVG() 함수를 사용해 평균을 구하는 방법이 있습니다.

보통은 대체 공휴일이나, 회사 기준의 휴무일 등을 계산하기 위해 날짜와 관련된 테이블을 회사마다 관리하고 있으니, 업무에 활용하신다면 2번 방법을 활용해보시는 것도 좋을 것 같습니다.

감사합니다.

순위 함수 연습 문제 - 스테디셀러 작가 찾기

0

84

1

문제 내용이 잘못된 것 같습니다.

0

57

2

서브쿼리 질문

0

59

2

[수업질문] 서브쿼리 > null데이터 avg사용 주의

0

71

1

서브쿼리는 언제 작성하는건가요?

0

66

1

안녕하세요 질문드립니다.

0

66

2

Top Earners 문제관련 질문

0

95

2

고급반 cheetsheet

0

145

2

196. Delete Duplicate Emails 좋은 코드 질문

0

140

1

a.id = 1과 b.id=1이 없어도 되는 이유

0

125

0

강의 플랫폼

0

197

3

리트코드 177번 function 풀이중 case when 활용을 위한 서브쿼리 구문을 제출 시 검증에 통과되지 않도록 보강된 듯 하네요

0

203

2

ERD 읽는법에 추가 질문 있어요

0

249

1

lead, lag로 풀이할 시 id 값이 존재하지 않는 경우의 오답

0

355

2

사용자정의함수

0

230

1

이 문제 inner join이 이해가 안됩니다.

0

294

1

평균 함수 사용할 때 주의점과 해결법

0

259

1

196. subquery로 풀 때, 궁금한 점

0

382

2

쿼리성능 질문드립니다.

0

311

1

리트코드 highest department salary 문제

0

257

2

The report 문제 order by부분 질문

0

268

2

리트코드 서브쿼리 문제 질문

0

418

1

DEPARTMENT HIGHEST SALARY 서브쿼리 문제 문의

0

233

1

서브쿼리의 활용사례 및 조인관련질문

0

281

1