[프로그래머스]SQL 쿼리테스트 Lv3(3)

2025. 7. 30. 14:38·코딩 테스트/02. SQL

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
'코딩 테스트/02. SQL' 카테고리의 다른 글
  • [프로그래머스]SQL 쿼리테스트 Lv4(1)
  • [윈도우 함수]ROW_NUMBER()함수
  • [프로그래머스] SQL 쿼리테스트 Lv3(2)
  • [프로그래머스]SQL 쿼리테스트 Lv3(1)
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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
Growth DA Log
[프로그래머스]SQL 쿼리테스트 Lv3(3)
상단으로

티스토리툴바