코딩테스트 49

[MySQL] 프로그래머스 식품분류별 가장 비싼 식품 정보 조회하기

문제: 식품분류별로 가격이 제일 비싼 식품의 분류, 가격, 이름을 조회 - 식품분류가 '과자', '국', '김치', '식용유'인 경우만 출력 - 결과는 식품 가격을 기준으로 내림차순 정렬  해결방법:1. 카테고리별 가장 비싼 가격을 출력한 테이블과 기존 식품 정보 테이블을 INNER JOIN2. INNER JOIN 할 때, 카테고리와 가격을 기준으로 조인3. WHERE 절에 카테고리에 대한 조건 설정4. ORDER BY 로 식품 가격 기준 내림차순 예시코드:SELECT T1.CATEGORY, T2.MAX_PRICE, T1.PRODUCT_NAMEFROM FOOD_PRODUCT T1INNER JOIN (SELECT CATEGORY, MAX(PRICE) MAX_PRICE FROM FOOD_PRODU..

[SQL] 연습 2024.10.06

[MySQL] 프로그래머스 조건에 맞는 사용자와 총 거래금액 조회하기

문제: 완료된 중고 거래의 총금액이 70만 원 이상인 사람의 회원 ID, 닉네임, 총거래금액을 조회 - 결과는 총거래금액을 기준으로 오름차순 정렬  해결방법:1. 거래 게시판 테이블과 유저 테이블을 유저ID 로 INNER JOIN2. 완료된 중고 거래만 조회하기 위해 WHERE 절에서 조건 설정3. 회원ID 별 중고거래 금액을 조회하기 위해서 GROUP BY 회원ID 로 금액 SUM4. 완료 거래 총금액에 대해서 70만원 이상 조건 설정을 위해 HAVING 사용5. ORDER BY 로 오름차순 정렬 예시 코드:SELECT B.WRITER_ID, U.NICKNAME, SUM(B.PRICE) TOTAL_SALESFROM USED_GOODS_BOARD AS BINNER JOIN USED_GOODS_USER ..

[SQL] 연습 2024.10.05

[MySQL] 프로그래머스 대여 기록이 존재하는 자동차 리스트 구하기

문제:자동차 종류가 '세단'인 자동차들 중 10월에 대여를 시작한 기록이 있는 자동차 ID 리스트를 출력- 자동차 ID 리스트는 중복 없이 출력- 자동차 ID를 기준으로 내림차순 정렬 해결 방법:1. 자동차 테이블과 대여 기록 테이블을 CAR_ID 로 INNER JOIN2. WHERE 절에 자동차 종류가 '세단' 조건 및 10월 조건(MONTH 함수 사용) 설정3. 중복없는 리스트 출력을 위해 DISTINCT 사용4. ORDER BY 로 내림차순 정렬 예시 코드:SELECT DISTINCT C.CAR_IDFROM CAR_RENTAL_COMPANY_CAR AS CINNER JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY AS HON C.CAR_ID = H.CAR_IDWHERE C.CA..

[SQL] 연습 2024.10.04

[MySQL] 프로그래머스 성분으로 구분한 아이스크림 총 주문량

문제:각 아이스크림 성분 타입과 성분 타입에 대한 아이스크림의 총주문량을 총주문량이 작은 순서대로 조회- 총주문량을 나타내는 컬럼명은 TOTAL_ORDER로 지정 해결방법:1. 성분타입이 있는 테이블과 주문량 테이블을 INNER JOIN2. GROUP BY 와 SUM 으로 성분 타입별 총 주문량 계산 예시 코드:SELECT I.INGREDIENT_TYPE, SUM(F.TOTAL_ORDER) TOTAL_ORDER -- F.SHIPMENT_ID, F.FLAVOR, F.TOTAL_ORDER, I.INGREDIENT_TYPEFROM FIRST_HALF AS FINNER JOIN ICECREAM_INFO AS ION F.FLAVOR = I.FLAVORGROUP BY I.INGREDIENT_TYPEORDER BY..

[SQL] 연습 2024.09.28

[MySQL] 프로그래머스 조건별로 분류하려 주문상태 출력하기

문제:FOOD_ORDER 테이블에서 2022년 5월 1일을 기준으로 주문 ID, 제품 ID, 출고일자, 출고여부를 조회- 출고여부: 2022년 5월 1일까지 출고완료, 이 후 날짜는 출고 대기, 미정이면 출고미정- 결과는 주문 ID를 기준으로 오름차순 정렬 해결방법:1. SELECT 에서 출고여부를 CASE 문으로 설정2. 날짜 형식에 대한 포맷을 맞추기3. ORDER BY 로 정렬 예시코드:SELECT ORDER_ID, PRODUCT_ID, DATE_FORMAT(OUT_DATE, "%Y-%m-%d") AS OUT_DATE , (CASE WHEN OUT_DATE "2022-05-01" THEN "출고대기" ELSE "출고미정" END) AS 출고여부FROM FOO..

[SQL] 연습 2024.09.22

[MySQL] 프로그래머스 상품 별 오프라인 매출 구하기

문제:PRODUCT 테이블과 OFFLINE_SALE 테이블에서 상품코드 별 매출액(판매가 * 판매량) 합계를 출력- 결과는 매출액을 기준으로 내림차순 정렬, 매출액이 같다면 상품코드를 기준으로 오름차순 정렬 해결방법:1. PRODUCT 테이블과 OFFLINE_SALE 테이블은 PRODUCT_ID 로 INNER JOIN2. SALES_AMOUNT 랑 PRICE 를 곱한 값에 대해 GROUP BY 로 상품코드별 SUM()3. ORDER BY 로 정렬 예시코드:SELECT P.PRODUCT_CODE, SUM(S.SALES_AMOUNT * P.PRICE) AS SALESFROM OFFLINE_SALE AS SINNER JOIN PRODUCT AS PON S.PRODUCT_ID = P.PRODUCT_IDGROUP..

[SQL] 연습 2024.09.21

[MySQL] 프로그래머스 카테고리별 도서 판매량 집계하기

문제:카테고리(CATEGORY), 총 판매량(TOTAL_SALES) 리스트를 출력- 2022년 1월의 카테고리 별 도서 판매량을 합산- 결과는 카테고리명을 기준으로 오름차순 정렬 해결방법:1. 도서 테이블과 판매 테이블을 INNER JOIN 으로 결합2. 카테고리 별 도서 판매량은 GROUP BY 와 SUM() 사용3. 2022년 1월에 대한 기간 설정은 WHERE 에서 BETWEEN 으로 설정 예시 코드:SELECT B.CATEGORY, SUM(BS.SALES) TOTAL_SALESINNER JOIN BOOK AS BON BS.BOOK_ID = B.BOOK_IDWHERE DATE(BS.SALES_DATE) BETWEEN '2022-01-01' AND '2022-01-31'GROUP BY B.CATEGO..

[SQL] 연습 2024.09.20

[MySQL] 프로그래머스 조건에 맞는 도서와 저자 리스트 출력

문제:'경제' 카테고리에 속하는 도서들의 도서 ID(BOOK_ID), 저자명(AUTHOR_NAME), 출판일(PUBLISHED_DATE) 리스트를 출력 해결방법:1. BOOK 과 AUTHOR 테이블은 AUTHOR_ID 로 JOIN2. 출판일은 DATE_FORMAT() 으로 변환 후 출력3. WHERE 절에서 카테고리 '결제' 로 설정 예시 코드:SELECT BOOK_ID, AUTHOR_NAME, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATEFROM BOOKINNER JOIN AUTHORON BOOK.AUTHOR_ID = AUTHOR.AUTHOR_IDWHERE CATEGORY = '경제'ORDER BY PUBLISHED_DATE;

[SQL] 연습 2024.09.15

[MySQL] 자동차 종류 별 특정 옵션이 포함된 자동차 수

문제: '통풍시트', '열선시트', '가죽시트' 중 하나 이상의 옵션이 포함된 자동차가 자동차 종류 별로 몇 대인지 출력 - 자동차 수에 대한 컬럼명은 CARS로 지정- 자동차 종류를 기준으로 오름차순 정렬  해결방법:1. 여러가지 옵션을 WHERE 절에서 REGEXP 로 설정2. 종류별 몇 대인지는 GROUP BY 사용3. ORDER BY 오름차순 정렬 예시 코드:SELECT CAR_TYPE, COUNT(*) CARSFROM CAR_RENTAL_COMPANY_CARWHERE options REGEXP '통풍시트|열선시트|가죽시트'GROUP BY car_typeORDER BY CAR_TYPE;

[SQL] 연습 2024.09.14

[MySQL] 프로그래머스 12세 이하인 여자 환자 목록 출력하기

문제:12세 이하인 여자환자의 환자이름, 환자번호, 성별코드, 나이, 전화번호를 조회- 전화번호가 없는 경우, 'NONE'으로 출력- 결과는 나이를 기준으로 내림차순 정렬하고, 나이 같다면 환자이름을 기준으로 오름차순 해결방법:1. SELECT 에서 전화번호가 없는 경우에 대해서 IFNULL() 로 처리2. WHERE 절에서 12세 이하, 여자 환자 조건 설정3. ORDER BY 로 정렬 순서 정하기 예시 코드:SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO, "NONE") AS TLNOFROM PATIENTWHERE AGE

[SQL] 연습 2024.09.08