1. 헤비 유저가 소유한 장소
https://school.programmers.co.kr/learn/courses/30/lessons/77487
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
SELECT ID, NAME, HOST_ID
FROM PLACES
WHERE HOST_ID IN (SELECT HOST_ID
FROM PLACES
GROUP BY HOST_ID
HAVING COUNT(ID) >= 2)
ORDER BY ID;
2. 대여 횟수가 많은 자동차들의 월별 대여 횟수
https://school.programmers.co.kr/learn/courses/30/lessons/151139
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
WHERE절에 2가지 조건을 넣은 방법
- 조건1. 대여 시간일을 기준으로 2022년 8월부터 2022년 10월 내에 대여를 했다
- 조건2. 그 기간 내 총 대여 횟수가 5회 이상이다
이 작업을 하고나서 월별 자동차 ID 별 총 대여 횟수를 GROUP BY를 진행했습니다.
SELECT
MONTH(START_DATE) AS MONTH,
CAR_ID,
COUNT(*) AS RECORDS
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE BETWEEN '2022-08-01' AND '2022-10-31'
AND CAR_ID IN (
SELECT CAR_ID
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE BETWEEN '2022-08-01' AND '2022-10-31'
GROUP BY CAR_ID
HAVING COUNT(*) >= 5
)
GROUP BY MONTH(START_DATE), CAR_ID
ORDER BY MONTH ASC, CAR_ID DESC;
3. 대장균들의 자식 수 구하기(SELF JOIN)
https://school.programmers.co.kr/learn/courses/30/lessons/299305
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
SELECT
a.ID,
COUNT(b.PARENT_ID) AS CHILD_COUNT #b개체가 존재하면 자식이 있다는 뜻 b가 없으면 count되지 않음
FROM
ECOLI_DATA a LEFT JOIN ECOLI_DATA b # left join 이기 때문에 자식이 없는 개체도 결과에서 빠지지 않는다.
ON a.ID = b.PARENT_ID #a개체가 b개체의 부모인 경우를 매칭 해주는 조건
GROUP BY
a.ID # 개체마다 자식이 몇명인지 세기 위해 그룹핑
ORDER BY
a.ID;
POINT!
SELF JOIN
: 한 테이블을 기준으로 자기 자신돠 JOIN을 하는 것
여기서 중요한 건 JOIN할 때 역할을 분리하는 별칭이 핵심입니다.
이렇게 하면 한 테이블에서 부모와 자식 역할을 나눠서 비교할 수 있어요.
활용 예시 설명
| 조직도 | 상사(부모)와 팀원(자식) 관계 표현 |
| 카테고리 트리 | 대분류-중분류-소분류 계층 구조 |
| 대장균 계보 | 분화한 개체들의 상속 구조 추적 |
| 댓글 계층 | 댓글에 대한 대댓글 구조 표현 |
4. 물고기 종류별 대어 찾기
https://school.programmers.co.kr/learn/courses/30/lessons/293261
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
SELECT INFO.ID, NAME.FISH_NAME, INFO.LENGTH
FROM FISH_INFO AS INFO
LEFT JOIN FISH_NAME_INFO AS NAME
ON INFO.FISH_TYPE = NAME.FISH_TYPE
WHERE (INFO.FISH_TYPE,INFO.LENGTH)
IN (
SELECT FISH_TYPE, MAX(LENGTH)
FROM FISH_INFO
GROUP BY FISH_TYPE)
ORDER BY INFO.ID;
'코딩 테스트 > 02. SQL' 카테고리의 다른 글
| [프로그래머스]SQL 쿼리테스트 Lv4(1) (1) | 2025.08.01 |
|---|---|
| [윈도우 함수]ROW_NUMBER()함수 (3) | 2025.08.01 |
| [프로그래머스] SQL 쿼리테스트 Lv3(2) (2) | 2025.07.29 |
| [프로그래머스]SQL 쿼리테스트 Lv3(1) (5) | 2025.07.28 |
| [윈도우 함수]- 순위(RANK) 함수 (0) | 2025.07.17 |
