SQL - SW 마에스트로 코딩테스트 2차 대비

김보현·2026년 4월 4일

PS

목록 보기
69/69

SQL

데이터베이스와 대화하기 위한 언어.

SQL의 기본 구조

SELECT: 어떤 정보를 가져올 것인가
FROM: 어디(테이블)에서 가져올 것인가
WHERE: 어떤 조건에 맞는 데이터만 가져올 것인가

문제


요구하는 조건 4가지
1. 필터링: 자동차 종류가 SUV인 데이터만 골라낸다.
2. 계산: 그 자동차들의 평균 일일 대여 요금
3. 반올림: 평균값을 소수 첫번째 자리에서 반올림 (int만들기)
4. 이름짓기: 결과 컬럼의 이름을 AVERAGE_FEE로 표시

SELECT ROUND(AVG(DAILY_FEE),0) AS AVERAGE_FEE
FROM CAR_RENTAL_COMPANY_CAR
WHERE CAR_TYPE = 'SUV'


재구매는 같은 회원이 같은 상품을 2번 이상 구매
1. USER_ID, PRODUCT_ID 묶어서 살펴보기 (그룹화)
2. 묶음 안에 데이터가 2개 이상 들어있는지 확인 (조건 설정)

SQL 문법
① GROUP BY (그룹화)
데이터를 특정 컬럼 기준으로 그룹으로 묶음

  • GROUP BY USER_ID, PRODUCT_ID라고 쓰면, "A라는 사람이 B라는 물건을 산 내역"을 하나의 덩어리로 뭉쳐줍니다.
    ② HAVING (그룹 필터링)
    WHERE는 전체 데이터에서 행을 골라낼 때 쓰지만, HAVING은 GROUP BY로 묶인 그룹 중에서 조건을 만족하는 그룹만 골라낼 때 사용합니다.
  • HAVING COUNT(*) > 1 : 이 묶음 안에 데이터가 1개보다 많은(즉, 2개 이상인) 그룹만 남김

단계별 쿼리 작성
1단계: 어떤 컬럼을 보여줄까? (SELECT)
재구매한 회원 ID와 상품 ID를 출력

2단계: 어떤 기준으로 묶을까? (GROUP BY)
동일한 회원이 동일한 상품을 산 내역을 찾아야 하므로 두 컬럼을 함께 묶기

3단계: 재구매(2건 이상)인 데이터만 남기기 (HAVING)
묶인 그룹들 중에서 데이터 개수가 1개 초과인 것만 필터링

4단계: 정렬하기 (ORDER BY)
문제 조건: 회원 ID 기준 오름차순(ASC), 같다면 상품 ID 기준 내림차순(DESC).

profile
Fall in love with Computer Vision

0개의 댓글