SQL 'SELECT’ Problem Solving

Written by Data Analysis Team

Featured image

SQL 문제 풀이 정리

1. 평균 일일 대여 요금 구하기

문제

평균 일일 대여 요금을 계산하시오.

SQL 쿼리

SELECT ROUND(AVG(daily_fee)) AS average_fee
FROM car_rental_company_car
WHERE car_type='SUV';

출력 값

average_fee
93727

풀이 과정


2. 재구매가 일어난 상품과 회원 리스트 구하기

문제

재구매가 일어난 상품과 회원 리스트를 조회하시오.

SQL 쿼리

SELECT DISTINCT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(*) > 1
ORDER BY USER_ID ASC, PRODUCT_ID DESC;

풀이 과정

  1. SELECT DISTINCT USER_ID, PRODUCT_ID : 중복 제거
  2. FROM ONLINE_SALE : 데이터 조회 테이블 지정
  3. GROUP BY USER_ID, PRODUCT_ID : USER_IDPRODUCT_ID별로 그룹화
  4. HAVING COUNT(*) > 1 : 2번 이상 구매한 데이터만 필터링
  5. ORDER BY USER_ID ASC, PRODUCT_ID DESC : USER_ID 오름차순, PRODUCT_ID 내림차순 정렬

3. 과일로 만든 아이스크림 고르기

문제

과일로 만든 아이스크림 중 총 주문량이 3000개 이상인 제품을 조회하시오.

SQL 쿼리

SELECT b.flavor
FROM FIRST_HALF as a
JOIN ICECREAM_INFO as b
ON a.flavor = b.flavor
WHERE a.total_order > 3000 AND b.ingredient_type = 'fruit_based'
ORDER BY a.total_order DESC;

풀이 과정


4. 서울에 위치한 식당 목록 출력하기

문제

서울에 위치한 식당 정보를 조회하시오.

SQL 쿼리

SELECT b.REST_ID, a.REST_NAME, a.FOOD_TYPE, a.FAVORITES, a.ADDRESS
FROM rest_info as a
JOIN rest_review as b
ON a.rest_id = b.rest_id
HAVING address LIKE '서울%'
ORDER BY score DESC, favorites DESC;

풀이 과정


SQL 쿼리 실행 순서 정리

  1. SELECT
  2. FROM
  3. JOIN
  4. WHERE
  5. GROUP BY
  6. HAVING
  7. ORDER BY
  8. LIMIT

5. 흉부외과 또는 일반외과 의사 목록 출력하기

문제

흉부외과 또는 일반외과 의사 목록을 조회하시오.

SQL 쿼리

SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, '%Y-%m-%d')
FROM DOCTOR
WHERE MCDP_CD IN ('CS', 'GS')
ORDER BY HIRE_YMD DESC, DR_NAME ASC;

풀이 과정


6. 조건에 부합하는 중고거래 댓글 조회하기

문제

2022년 10월에 작성된 중고거래 게시글에 대한 댓글을 조회하시오.

SQL 쿼리

SELECT a.TITLE, a.BOARD_ID, b.REPLY_ID, b.WRITER_ID, b.CONTENTS, DATE_FORMAT(b.CREATED_DATE, '%Y-%m-%d') AS CREATED_DATE
FROM USED_GOODS_BOARD AS a
JOIN USED_GOODS_REPLY AS b
ON a.BOARD_ID = b.BOARD_ID
WHERE DATE_FORMAT(a.CREATED_DATE, '%Y-%m') = '2022-10'
ORDER BY b.CREATED_DATE ASC, TITLE ASC;

풀이 과정


7. 3월에 태어난 여성 회원 목록 출력하기

문제

3월에 태어난 여성 회원 목록을 조회하시오.

SQL 쿼리

SELECT MEMBER_ID, MEMBER_NAME, GENDER, DATE_FORMAT(DATE_OF_BIRTH, '%y-%m-%d') AS DATE_OF_BIRTH
FROM MEMBER_PROFILE
WHERE MONTH(DATE_OF_BIRTH) = 3 AND GENDER = 'W' AND TLNO IS NOT NULL;

풀이 과정


8. 대장균들의 자식 수 구하기

문제

대장균들의 ID별 자식 수를 조회하시오.

SQL 쿼리

SELECT a.ID, COUNT(b.PARENT_ID) AS CHILD_COUNT
FROM ECOLI_DATA AS a
LEFT JOIN ECOLI_DATA AS b
ON a.ID = b.PARENT_ID
GROUP BY a.ID
ORDER BY a.ID ASC;

풀이 과정