컴퓨터 활용/노년에 즐기는 코딩
[SQL 연습] 같은 주소에 살지만 학년이 다른 학생 두 명 비교
easyfly
2025. 10. 20. 07:44
반응형
같은 주소에 살지만 학년이 다른 학생 두 명 비교

이 SQL 문은 같은 주소에 살지만 학년이 다른 학생 두 명을 비교하여, 학년이 더 높은 학생과 낮은 학생의 이름을 짝지어 보여주는 쿼리입니다.
결과를 보면 ‘송윤아’와 ‘이영애’ 한 쌍이 나왔습니다.
🔍 쿼리 구조 분석
SELECT S1.이름, S2.이름
FROM 학생 S1
JOIN 학생 S2
ON S1.주소 = S2.주소
WHERE S1.학년 > S2.학년;
1️⃣ FROM 학생 S1 JOIN 학생 S2
- 학생 테이블을 자기 자신과 조인(Self Join) 한 것입니다.
- S1, S2는 같은 테이블의 두 별칭(alias)으로, 학생을 두 명씩 짝지어 비교하기 위함입니다.
2️⃣ ON S1.주소 = S2.주소
- 같은 주소(즉, 같은 곳에 사는 학생들)끼리만 비교하도록 설정했습니다.
- 예: 기숙사나 가족, 혹은 같은 자취방 등에 사는 경우를 찾는 조건입니다.
3️⃣ WHERE S1.학년 > S2.학년
- 같은 주소 중에서, S1 학생의 학년이 S2 학생보다 높은 경우만 선택합니다.
- 즉, 형·누나 또는 선배 관계를 의미할 수 있습니다.
4️⃣ SELECT S1.이름, S2.이름
- 조건을 만족하는 두 학생의 이름을 출력합니다.
- 왼쪽(S1.이름)은 학년이 높은 학생,
- 오른쪽(S2.이름)은 학년이 낮은 학생입니다.
📊 실행 결과 해석
| S1.이름 | S2.이름 |
| 송윤아 | 이영애 |
→ 해석:
‘송윤아’와 ‘이영애’는 같은 주소에 살지만,
‘송윤아’의 학년이 ‘이영애’보다 높습니다.
💡 정리 요약
| 항목 | 설명 |
| 조인 형태 | 자기 조인(Self Join) |
| 비교 기준 | 주소가 같고 학년이 다름 |
| 조건 | S1.학년 > S2.학년 |
| 출력 내용 | 같은 주소 내에서 학년이 높은 학생과 낮은 학생 이름 |
| 결과 의미 | 선후배 혹은 형제 관계처럼 해석 가능 |
반응형