프로그래머스 SQL 고득점 Kit 106문제 MySQL 풀이 (작성중)

프로그래머스 SQL 고득점 Kit 106문제

https://school.programmers.co.kr/learn/challenges?tab=sql_practice_kit
요즘 SQL 코딩테스트 문제도 종종 나와서 SQL 고득점 Kit을 MySQL로 풀어보았습니다.
SQL 문제는 SELECT * FROM 테이블명을 주석으로 숨겨두고, 구현한 로직을 /* */로 감싸서 전체 데이터를 확인하며 검수하면 좋습니다.

SELECT 33문제 풀이

조건에 맞는 도서 리스트 출력하기

SELECT
  BOOK_ID,
  DATE_FORMAT(PUBLISHED_DATE, "%Y-%m-%d") AS PUBLISHED_DATE
FROM
  BOOK
WHERE
  PUBLISHED_DATE LIKE '2021%'
AND
  CATEGORY = '인문'
ORDER BY PUBLISHED_DATE

DATE_FORMAT 인수로 “YYYY-MM-DD”를 넣으면 정상 동작하지 않습니다.

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

SELECT
  ugb.TITLE,
  ugb.BOARD_ID,
  ugr.REPLY_ID,
  ugr.WRITER_ID,
  ugr.CONTENTS,
  DATE_FORMAT(ugr.CREATED_DATE, '%Y-%m-%d') AS CREATED_DATE
FROM
  USED_GOODS_BOARD ugb
INNER JOIN
  USED_GOODS_REPLY ugr ON ugb.BOARD_ID = ugr.BOARD_ID
WHERE
  ugb.CREATED_DATE LIKE '2022-10%'
ORDER BY ugr.CREATED_DATE, ugb.TITLE

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

SELECT
  MEMBER_ID,
  MEMBER_NAME,
  GENDER,
  DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') AS DATE_OF_BIRTH
FROM
  MEMBER_PROFILE
WHERE
  DATE_FORMAT(DATE_OF_BIRTH, '%m') = '03'
AND
  GENDER = 'W'
AND
  TLNO IS NOT NULL
ORDER BY MEMBER_ID

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

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

평균 일일 대여 요금 구하기

인기있는 아이스크림

강원도에 위치한 생산공장 목록 출력하기

12세 이하인 여자 환자 목록 출력하기

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

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

모든 레코드 조회하기

오프라인/온라인 판매 데이터 통합하기

역순 정렬하기

아픈 동물 찾기

어린 동물 찾기

동물의 아이디와 이름

여러 기준으로 정렬하기

상위 n개 레코드

조건에 맞는 회원수 구하기

업그레이드 된 아이템 구하기

Python 개발자 찾기

조건에 맞는 개발자 찾기

잔챙이 잡은 수 구하기

가장 큰 물고기 10마리 구하기

특정 물고기를 잡은 총 수 구하기

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

대장균의 크기에 따라 분류하기 1

특정 형질을 가지는 대장균 찾기

부모의 형질을 모두 가지는 대장균 찾기

대장균의 크기에 따라 분류하기 2

특정 세대의 대장균 찾기

멸종위기의 대장균 찾기

SUM, MAX, MIN 10문제 풀이

가장 비싼 상품 구하기

SELECT
  MAX(PRICE) AS MAX_PRICE
FROM
  PRODUCT

가격이 제일 비싼 식품의 정보 출력하기

최댓값 구하기

최솟값 구하기

동물 수 구하기

중복 제거하기

조건에 맞는 아이템들의 가격의 총합 구하기

물고기 종류 별 대어 찾기

잡은 물고기 중 가장 큰 물고기의 길이 구하기

연도별 대장균 크기의 편차 구하기

GROUP BY 24문제 풀이

자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기

SELECT
  CAR_TYPE,
  COUNT(CAR_TYPE) AS CARS
FROM
  CAR_RENTAL_COMPANY_CAR
WHERE
  OPTIONS RLIKE ('통풍시트|열선시트|가죽시트')
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE

REGEXP 또는 RLIKE 연산자를 사용하면 정규표현식에 해당하는 데이터를 추출할 수 있습니다.

대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기

성분으로 구분한 아이스크림 총 주문량

조건에 맞는 사용자와 총 거래금액 조회하기

즐겨찾기가 가장 많은 식당 정보 출력하기

카테고리 별 도서 판매량 집계하기

자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기

진료과별 총 예약 횟수 출력하기

저자 별 카테고리 별 매출액 집계하기

식품분류별 가장 비싼 식품의 정보 조회하기

고양이와 개는 몇 마리 있을까

동명 동물 수 찾기

년, 월, 성별 별 상품 구매 회원 수 구하기

입양 시각 구하기(1)

입양 시각 구하기(2)

가격대 별 상품 개수 구하기

언어별 개발자 분류하기

조건에 맞는 사원 정보 조회하기

연간 평가점수에 해당하는 평가 등급 및 성과금 조회하기

부서별 평균 연봉 조회하기

노선별 평균 역 사이 거리 조회하기

물고기 종류 별 잡은 수 구하기

월별 잡은 물고기 수 구하기

특정 조건을 만족하는 물고기별 수와 최대 길이 구하기

IS NULL 8문제 풀이

경기도에 위치한 식품창고 목록 출력하기

SELECT
  WAREHOUSE_ID,
  WAREHOUSE_NAME,
  ADDRESS,
  CASE WHEN FREEZER_YN IS NULL THEN 'N' ELSE FREEZER_YN END AS FREEZER_YN
FROM
  FOOD_WAREHOUSE
WHERE
  ADDRESS LIKE '경기도%'
ORDER BY WAREHOUSE_ID

MySQL에 IS_NULL 함수는 없고, CASE WHEN 문으로 NULL이면 대체하여 출력 가능합니다.

SELECT
  WAREHOUSE_ID,
  WAREHOUSE_NAME,
  ADDRESS,
  IFNULL(FREEZER_YN, 'N') AS FREEZER_YN
FROM
  FOOD_WAREHOUSE
WHERE
  ADDRESS LIKE '경기도%'
ORDER BY WAREHOUSE_ID

IFNULL 함수를 사용하면 더 간결하게 구현할 수 있습니다.

이름이 없는 동물의 아이디

이름이 있는 동물의 아이디

NULL 처리하기

나이 정보가 없는 회원 수 구하기

ROOT 아이템 구하기

업그레이드 할 수 없는 아이템 구하기

잡은 물고기의 평균 길이 구하기

JOIN 12문제 풀이

주문량이 많은 아이스크림들 조회하기

SELECT A.FLAVOR
FROM
(
  SELECT
    j.FLAVOR,
    j.TOTAL_ORDER + f.TOTAL_ORDER AS ADD_TOTAL_ORDER
  FROM
    (SELECT FLAVOR, SUM(TOTAL_ORDER) AS TOTAL_ORDER FROM JULY GROUP BY FLAVOR) j
  INNER JOIN
    FIRST_HALF f ON j.FLAVOR = f.FLAVOR
  ORDER BY
    ADD_TOTAL_ORDER DESC
  LIMIT 3
) A

GROUP BY와 SUM으로 JULY 테이블의 FLAVOR 별 TOTAL_ORDER 합계를 구할 수 있습니다.

5월 식품들의 총매출 조회하기

특정 기간동안 대여 가능한 자동차들의 대여비용 구하기

조건에 맞는 도서와 저자 리스트 출력하기

그룹별 조건에 맞는 식당 목록 출력하기

없어진 기록 찾기

있었는데요 없었습니다

오랜 기간 보호한 동물(1)

보호소에서 중성화한 동물

상품 별 오프라인 매출 구하기

상품을 구매한 회원 비율 구하기

FrontEnd 개발자 찾기

String, Date 19문제 풀이

조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기

특정 옵션이 포함된 자동차 리스트 구하기

SELECT
  CAR_ID,
  CAR_TYPE,
  DAILY_FEE,
  OPTIONS
FROM
  CAR_RENTAL_COMPANY_CAR
WHERE
  OPTIONS RLIKE '네비게이션'
ORDER BY CAR_ID DESC

자동차 대여 기록 별 대여 금액 구하기

조건에 부합하는 중고거래 상태 조회하기

조건별로 분류하여 주문상태 출력하기

조건에 맞는 사용자 정보 조회하기

대여 기록이 존재하는 자동차 리스트 구하기

자동차 대여 기록에서 장기/단기 대여 구분하기

자동차 평균 대여 기간 구하기

취소되지 않은 진료 예약 조회하기

루시와 엘라 찾기

이름에 el이 들어가는 동물 찾기

중성화 여부 파악하기

오랜 기간 보호한 동물(2)

카테고리 별 상품 개수 구하기

DATETIME에서 DATE로 형 변환

연도 별 평균 미세먼지 농도 조회하기

한 해에 잡은 물고기 수 구하기

분기별 분화된 대장균의 개체 수 구하기

Leave a comment