[solvesql_Lv3]멘토링 짝꿍 리스트(JOIN에서 ON의 특징)

2025. 10. 14. 00:03·코딩 테스트/02. SQL

1. 문제 설명

멘토,멘티 정의

  • 멘티 : 3개월 이내 입사한 인원 전체
  • 멘토 : 재직한지 2년이상된 직원
  • 기준날짜 : 2021년 12월 31일 기준으로

조건

  • 조건 1) 멘토와 멘티는 다른 부서여야한다.
  • 조건 2) 매칭 가능한 멘토가 없는 경우도 모두 포함
  • 조건 3) 멘티id기준 ASC, 멘티1명에 대해 배정 가능한 멘토다 여러명인 경우 멘토 id 기준 ASC

2. 풀이

WITH mentee AS (
SELECT employee_id, name, department
FROM employees
WHERE join_date BETWEEN DATE_SUB('2021-12-31', INTERVAL 3 MONTH)
  AND '2021-12-31'
),
 mentor AS (
SELECT employee_id, name, department
FROM employees
WHERE join_date <= DATE_SUB('2021-12-31', INTERVAL 2 YEAR)
) 

SELECT 
  m.employee_id  AS mentee_id,
  m.name         AS mentee_name,
  t.employee_id  AS mentor_id,
  t.name         AS mentor_name
FROM mentee m
LEFT JOIN mentor t
ON m.department <> t.department
ORDER BY mentee_id ASC, mentor_id ASC;

 

3. ON : 어떤 관계를 만족하면 붙어라

✅ JOIN = 규칙으로 짝짓기

  • ON 절은 “두 테이블의 데이터를 어떤 기준으로 연결할지”를 쓰는 곳.
  • 꼭 같은 값(=)이 아니어도 된다.
    예를 들어
    • a.id = b.id → 같은 값끼리
    • a.salary > b.salary → 급여가 더 큰 경우
    • a.department <> b.department → 서로 다른 부서끼리

✅ LEFT JOIN을 쓴 이유

  • 멘티가 기준이니까,
    “멘토가 있든 없든 모든 멘티를 결과에 포함해야 함”
    → 그래서 LEFT JOIN.
    (INNER JOIN이면 멘토가 없으면 결과에서 사라짐.)

✅ ON m.department <> t.department 으로 “부서가 다르다”는 규칙

멘티 한 명이 여러 부서에 속한 멘토들과 모두 매칭될 수 있다

 

✅ 예시로 이해하기

더보기

🧱 mentee 테이블


mentee_id department
1 HR
2 IT

🧱 mentor 테이블

mentor_id department
101 HR
102 IT
103 Design
104 Marketing

🔄 LEFT JOIN ON m.department <> t.department 결과

mentee_id mentee_dept mentor_id mentor_dept
1 HR 102 IT
1 HR 103 Design
1 HR 104 Marketing
2 IT 101 HR
2 IT 103 Design
2 IT 104 Marketing

 

'코딩 테스트 > 02. SQL' 카테고리의 다른 글

(solvesql) Advent of SQL 2025 5일차  (0) 2025.12.08
[solvesql_Lv3] 미세먼지 수치의 계절간 차이(중앙값구하기)  (0) 2025.10.14
[solvesql_Lv3] 작품이 없는 작가 찾기  (0) 2025.10.13
[solvesql]MySQL_2(Lv2)  (1) 2025.10.12
[solvesql_Lv2] 제목이 모음으로 끝나지 않는 영화  (0) 2025.10.12
'코딩 테스트/02. SQL' 카테고리의 다른 글
  • (solvesql) Advent of SQL 2025 5일차
  • [solvesql_Lv3] 미세먼지 수치의 계절간 차이(중앙값구하기)
  • [solvesql_Lv3] 작품이 없는 작가 찾기
  • [solvesql]MySQL_2(Lv2)
Growth DA Log
Growth DA Log
Growth DA Log 님의 블로그 입니다.
  • Growth DA Log
    Growth DA Log님의 블로그
    Growth DA Log
  • 전체
    오늘
    어제
    • 분류 전체보기 (125)
      • TIS_COMPANY (6)
      • 코딩 테스트 (61)
        • 01. Python (3)
        • 02. SQL (58)
      • 데이터 분석 (53)
        • 01. BigQuery (9)
        • 02. GA4 (1)
        • 02-1. GA4를 더 잘 다루기 위한 마케팅 개.. (5)
        • 03. streamlit (5)
        • 04. Git (12)
        • 05. 데이터 엔지니어링 (3)
        • 06. 데이터 모델링 (11)
        • 07. Excel (0)
        • 08. Tableau (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    윈도우함수
    solvesql
    이행성
    tableau
    git
    streamlit
    프로그래머스
    cross_join
    AARRR
    DENSE_RANK
    코테
    Reset
    ROW_NUMBER
    쿼리테스트
    tableaubootcamp
    코드잇스프린트후기
    rank
    SQL
    revert
    코딩테스트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
Growth DA Log
[solvesql_Lv3]멘토링 짝꿍 리스트(JOIN에서 ON의 특징)
상단으로

티스토리툴바