SQL 면접 문제 - 자신 이 면접 을 볼 때마다 겪 는 문제 기록 2

1251 단어 데이터 분석SQL
실제 장면 문제:
400 개의 점포 (poi id) 가 새로 출시 되 었 으 며, SQL 수출 을 통 해 이 400 개의 점포 가 5 월 1 - 31 일 평균 영업 시간 과 그들의 점포 가 있 는 지역 (aor id) 의 다른 점포 의 평균 영업 시간 을 비교 해 야 한다.한 구역 에 여러 개의 점포 가 있 는데, 각 가 게 는 한 구역 에 대응한다.
출력 헤더 요청:
Poi_id
매장 평균 영업 시간
Aor_id
지역 평균 영업 시간
가게 정보 표
필드
필드 이름
Poi_id
가게 ID
Aor_id
영역 ID
dt
날짜.
Op_time
영업 시간 이 길다
가게 정보
필드
필드 이름
Poi_id
가게 ID
제목 에서 분석 한 결과 하위 조회 가 필요 한 것 으로 나 타 났 다. 먼저 가게 의 평균 영업 시간 을 얻 은 다음 에 지역 의 평균 영업 시간 을 얻 고 join 을 통 해 두 개의 조회 링크 를 연결 하면 된다.
처음에 나 는 B 시계 에 대해 의문 이 있 었 다. 이 시 계 는 무엇 에 쓰 이 는 것 인지 알 이 별로 없 는 것 같 았 다.나중에 나 는 문 제 를 다시 한 번 보 았 다. 아마도 A 표 에 있 는 완전한 B 표 정보 가 아 닌 것 같다. 그러면 왼쪽 연결 을 사용 해 야 한다.
SQL 문 구 는 다음 과 같 습 니 다.
SELECT x.Poi_id,        ,y.Aor_id,         FROM

((SELECT Poi_id FROM a.b) AS x

LEFT JOIN

(SELECT Poi_id,Aor_id,AVG(Op_time) AS         FROM a.a 
WHERE dt BETWEEN ‘2019-5-1’ AND ‘2019-5-31’
GROUP BY Poi_id,Aor_id) AS y

ON x.Poi_id =y.Poi_id)

LEFT JOIN

(SELECT Aor_id,AVG(Op_time) AS         FROM a.a 
WHERE dt BETWEEN ‘2019-5-1’ AND ‘2019-5-31’
GROUP BY Aor_id) AS z

ON y.Aor_id=z.Aor_id

제 가 좀 수 다스 럽 게 쓴 것 같 아 요. 더 좋 고 효율 적 인 화법 이 있다 면 댓 글로 남 겨 주세요.

좋은 웹페이지 즐겨찾기